【问题标题】:GMT in java, simple but not workingjava中的GMT,简单但不起作用
【发布时间】:2014-04-01 11:54:18
【问题描述】:

这既是重复的,又不是重复的!

请帮助我,不要将我转介到其他任何地方,因为我真的无法获得 GMT 时间。 答案似乎很简单,但对我不起作用。 我不知道所有答案都是网络错误,还是我犯了错误?

请看一下这个 sn-p 和结果:

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);

结果:

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

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

【问题讨论】:

标签: java datetime gmt milliseconds


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我可以存储通过 Calendar#getTimeInMillis 获得的毫秒时间,并在检索时使用您的说明吗?
  • 是的,存储毫秒值,当你格式化显示时,设置你想要显示的时区。
【解决方案2】:

一种方法是使用SimpleDateFormatsetTimeZone 方法():

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

干杯,

【讨论】:

  • 请你完成你的答案,以便我测试它。
  • 您应该能够阅读 SimpleDateFormat 的 Javadoc 并从那里开始工作...
  • 哎呀。谢谢,但似乎 aetheria 没有账单!
【解决方案3】:

试试下面的

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

【讨论】:

  • 您好,为已经存在的两个添加相同的答案:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 2011-04-20
  • 2013-12-20
  • 2017-04-04
  • 1970-01-01
相关资源
最近更新 更多