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

来源:3-7 Calendar 类的应用

淡淡蓝蓝

2015-11-27 21:40

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回答

  • qq_倔強人生_0
    2016-01-28 01:19:01

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

  • topband
    2016-01-27 16:43:59

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

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

  • 蒲公英shine
    2015-11-30 16:16:07

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

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

  • sxian_wang
    2015-11-28 00:03:43

    用含参的方式试试:

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

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

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

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

    sxian_...

    下面的代码不对,弄错了。你用下面的这个打印下: System.out.println(timeZone.getID()); System.out.println(timeZone.getDisplayName());

    2015-11-28 00:12:16

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409777 学习 · 4339 问题

查看课程

相似问题