为了账号安全,请及时绑定邮箱和手机立即绑定

为什么显示的时间与实际的时间差了8小时?

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class HelloWorld {
    
    public static void main(String[] args) {
		// 创建Canlendar对象

    Calendar c = Calendar.getInstance();
      TimeZone timeZone = c.getTimeZone();
      System.out.println("timeZone "+timeZone+"  ");
		// 将Calendar对象转换为Date对象
		Date date = c.getTime();
        
		// 创建SimpleDateFormat对象,指定目标格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
		// 将日期转换为指定格式的字符串
		String now = sdf.format(date);
		System.out.println("当前时间:" + now);
	}
}

按照网上的说法,查了一下时区,是上海的没错啊,但是与现在的时间差了八个小时,也就是说,就是格林尼治时间?是什么问题呢?

正在回答

4 回答

就是服务器的问题,你把代码放到eclipse显示的就是本地时间

0 回复 有任何疑惑可以回复我~

这个时间时慕课服务器上的,它服务器采用的时utc时间,而我们电脑本地的时间时东八区,也就是utc+8的时间。当然差了8个小时啦。

换言之,如果慕课他们服务器上的时间一直采用UTC,我们就比他们快8小时。

2 回复 有任何疑惑可以回复我~

我的机子也是差了8个小时,然后我输出了一下date,结果是:Mon Nov 30 08:10:31 UTC 2015,UTC采用的是世界统一时间。。

中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。

0 回复 有任何疑惑可以回复我~

用含参的方式试试:

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));    //获取东八区时间

getInsrance()有多种带参形式,无参的方法获取的应该是默认的本机所使用的时区,具体的实现原理我不清楚,你要是感兴趣的话可以自己网上查查。所以应该是Java在获取你本地使用时区的时候挂掉了。你用

System.out.println(TimeZone.getTimeZone("GMT+08:00"));

打印看一下你的Java获取的你的时区参数,看下id是不是"GMT+08:00"

0 回复 有任何疑惑可以回复我~
#1

sxian_wang

下面的代码不对,弄错了。你用下面的这个打印下: System.out.println(timeZone.getID()); System.out.println(timeZone.getDisplayName());
2015-11-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么显示的时间与实际的时间差了8小时?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信