java中的GMT,简单但不起作用

时间:2014-02-28 12:56:33

标签: java datetime gmt milliseconds

这是重复的而不是重复的!

请帮助我,不要把我推荐到其他任何地方,因为我真的无法获得GMT时间。 答案似乎很简单,但对我来说不起作用。 我不知道网上的答案是错误的,还是我犯了错误?

请查看此代码段和结果:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
long time = cal.getTimeInMillis();
Date date = new Date(time);
System.out.println(date);

time = System.currentTimeMillis();
date = new Date(time);
System.out.println("--\n" + date);

结果:

2月28日星期五16:07:12 GMT + 03:30 2014年 -
2月28日星期五16:07:12 GMT + 03:30 2014

两者都显示我的当地时间。我甚至直接打印时间,因为我认为这可能是由于Date类,但即使是相同的(只有大约1或2毫秒的差异)。

3 个答案:

答案 0 :(得分:2)

setTimeZone()上使用SimpleDateFormat在特定时区打印日期。

DateFormat format = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss z");

Date d = format.parse("28-Feb-2014 13:00:00 PST");
System.out.println(format.format(d));

format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(format.format(d));

打印:

28-Feb-2014 13:00:00 PST
28-Feb-2014 21:00:00 GMT

答案 1 :(得分:1)

这样做的一种方法是使用SimpleDateFormatsetTimeZone方法():

SimpleDateFormat sdf = new SimpleDateFormat( "..." );
sdf.setTimeZone( TimeZone.getTimeZone( "GMT" ) );   // or UTC
System.out.println( sdf.format( date ) );

干杯,

答案 2 :(得分:0)

尝试以下

SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
f.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(f.format(new Date(System.currentTimeMillis())));