首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >丢失的8小时去哪里了?

丢失的8小时去哪里了?

作者头像
红目香薰
发布2023-02-23 14:20:43
发布2023-02-23 14:20:43
1.2K0
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

在当年大二选修课的时候就遇到了这个问题,是时间戳转换成时间的时候,如果是自己来计算则会少了8个小时。一直不知道为啥,我们今天就再来算一算,最后我们在说说为啥。

Java计算时间戳转换当前时分秒

代码语言:javascript
复制
Date date = new Date();
// 获取当前的时间戳·单位毫秒·21时15分32秒
long nowTime = date.getTime();

输出时间戳:这个时间戳的单位是毫秒。

在这里我们是根本看不出来是为啥的。接下来我们来一个一个的计算。

转换成秒计算小时

毫秒换算成秒

代码语言:javascript
复制
long second = nowTime / 1000;

换算成当前秒

代码语言:javascript
复制
long seconds = second % 60;

换算成当前分钟

代码语言:javascript
复制
long minutes = second / 60 % 60;

换算成小时

代码语言:javascript
复制
long hours = minutes / 60 % 24;

我们可以获取到:

很明显,我们计算的小时是有问题的,这个时间戳的时间是:【21时15分32秒】。可是时间换算完毕是13时,很明显21-13=8,相差8个小时,这个时候我们就很懵逼,咋回事呢?

我记得很早以前,我还只会VB语言的时候就遇到过这个问题。后来老师说,咱们是东八区我一下就明白了。

原来我们在东八区,所以我们的地区时应该在这个时间戳的基础上加上8个小时就对了。故而有以下代码:

代码语言:javascript
复制
package com.item.action;

import java.util.Date;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		Date date = new Date();
//		// 获取当前的时间戳·单位毫秒
//		long nowTime = date.getTime();
//		System.out.println(nowTime);
		long nowTime = 1676985332143l;
		// 获取秒
		long second = nowTime / 1000;
		System.out.println(second + "s");
		// 获取分钟
		long seconds = second % 60;
		System.out.println(seconds + "s");
		long minutes = second / 60;
		System.out.println(minutes % 60 + "min");
		// 获取小时
		long hours = minutes / 60 % 24 + 8;
		System.out.println(hours + "h");
		System.out.println(hours+"时"+(minutes % 60)+"分"+seconds+"秒");
	}

}

输出效果:

补上8个小时就是正确的时间了,这个类型题在蓝桥杯上也是出现过的,大家可以搜一搜,前三题,那个题目我倒是忘记了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • Java计算时间戳转换当前时分秒
  • 转换成秒计算小时
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档