无法将时间转换为 GMT
Posted
技术标签:
【中文标题】无法将时间转换为 GMT【英文标题】:Can't convert time to GMT 【发布时间】:2016-06-08 13:42:56 【问题描述】:我的问题是我想将本地时间转换为GMT
。我能够转换实际时间并将其保存到 Parse,但问题是 Parse 应用了自己的:
2016 年 2 月 24 日星期三 10:00:00 GMT+05:30
这是我转换为GMT00:00
后得到的日期,但问题是GMT+05:30
实际上是错误的,因为我的日期实际上在GMT
中。现在,当我将此日期放入服务器时,它会进一步将时间缩短 5:30 小时。那么我们怎样才能把这个GMT+05:30
改成GMT+00:00
【问题讨论】:
请出示您的代码,看看您目前得到了什么 我认为这是此线程的副本:***.com/questions/2055407/… 您的输入和输出到底是什么?您是否需要某种格式的日期时间值的字符串表示形式?您需要某种类型的对象吗? 【参考方案1】:如果您使用的是 java 8。您可以从新的时间库中使用。 正如您所说,您想要的似乎是在 UTC 中有一个印记,即 GMT+00
更多关于时间库here
这一行:
System.out.println(Instant.now().toString());
给了
2016-02-25T17:54:55.420Z
希望它能让你更清楚。
【讨论】:
不需要偏移量。Instant
定义为 UTC。 Instant.now().toString()
【参考方案2】:
我们将从当前的当地时间开始。
Calendar cal = Calendar.getInstance(); // automatically produces and instance of the current date/time
据我了解,您当地的日期准确到GMT
,但您的时间比实际的GMT
早5:30。
为了从您的本地时间减去 5:30,您可以执行以下操作。
cal.add(Calendar.HOUR, -5);
cal.add(Calendar.MINUTE, -30);
System.out.println(cal.getTime());
相反,如果您想添加到时间字段,您可以简单地使用:
cal.add(Calendar.HOUR, 5); // note I have removed the minus(-) symbol
cal.add(Calendar.MINUTE, 30); // note I have removed the minus(-) symbol
System.out.println(cal.getTime());
【讨论】:
以上是关于无法将时间转换为 GMT的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GMT(格林威治)时间将 XMLGregorianCalendar 转换为 java.util.Date