淡淡蓝蓝
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); } }
按照网上的说法,查了一下时区,是上海的没错啊,但是与现在的时间差了八个小时,也就是说,就是格林尼治时间?是什么问题呢?
就是服务器的问题,你把代码放到eclipse显示的就是本地时间
这个时间时慕课服务器上的,它服务器采用的时utc时间,而我们电脑本地的时间时东八区,也就是utc+8的时间。当然差了8个小时啦。
换言之,如果慕课他们服务器上的时间一直采用UTC,我们就比他们快8小时。
我的机子也是差了8个小时,然后我输出了一下date,结果是:Mon Nov 30 08:10:31 UTC 2015,UTC采用的是世界统一时间。。
中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。
用含参的方式试试:
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00")); //获取东八区时间
getInsrance()有多种带参形式,无参的方法获取的应该是默认的本机所使用的时区,具体的实现原理我不清楚,你要是感兴趣的话可以自己网上查查。所以应该是Java在获取你本地使用时区的时候挂掉了。你用
System.out.println(TimeZone.getTimeZone("GMT+08:00"));
打印看一下你的Java获取的你的时区参数,看下id是不是"GMT+08:00"
Java入门第三季
409787 学习 · 4340 问题
相似问题