从unix时间戳获取GMT日期[重复]
Posted
技术标签:
【中文标题】从unix时间戳获取GMT日期[重复]【英文标题】:Getting date in GMT from unix timestamp [duplicate] 【发布时间】:2013-05-28 15:51:03 【问题描述】:我编写了以下代码以从 unix 时间戳获取 GMT 日期
private Date converToDate(String unixTimeStamp)
//unix timestamps have GMT time zone.
DateFormat gmtFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
//date obtained here is in IST on my system which needs to be converted into GMT.
Date time = new Date(Long.valueOf(unixTimeStamp) * 1000);
String result = gmtFormat.format(time);
return lineToDate(result, true);
这段代码在执行时有
Mon May 27 02:57:32 IST 2013
日期变量中的值和
Sun May 26 21:27:32 GMT 2013
在结果变量中,如何直接将结果变量中的值放入日期变量中?
【问题讨论】:
在字符串中给出结果,我在字符串中得到它,但我想要的是结果应该是日期而不是字符串。 查看上述问题中的回复***.com/a/2453820/2235132。 【参考方案1】:从概念上讲,这就是问题所在:
//date obtained here is in IST on my system which needs to be converted into GMT.
Date time = new Date(Long.valueOf(unixTimeStamp) * 1000);
Date
没有时区。这是你想要的值。当您调用 toString()
时,它会将其转换为您的本地时区这一事实与它实际代表的值无关。 Date
只是自 Unix 纪元(1970 年 1 月 1 日,UTC 午夜)以来的毫秒数。所以你的整个方法可以是:
private static Date convertToDate(String unixTimeStamp)
return new Date(Long.valueOf(unixTimeStamp) * 1000);
您不需要任何类型的格式化程序,因为您并没有真正尝试获得文本表示。
如果可以的话,我建议您使用 Joda Time 进行日期/时间工作,顺便说一下 - 这是一个更简洁的 API。
【讨论】:
【参考方案2】:Date 只是 long 的包装器,它包含毫秒数。
您看到的是 Date 对象的默认 toString()
表示,它使用您的默认时区 (IST) 将日期转换为可读字符串。如果您希望使用 GMT 时区将日期表示为字符串,只需执行您所做的操作:使用带有 GMT 时区的日期格式。
Date 对象代表通用时间轴上的一个瞬间,并且没有任何时区。
【讨论】:
以上是关于从unix时间戳获取GMT日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JS 将 GMT 日期时间转换为 GMT Unix TimeStamp?
用于在 GMT 中获取 UNIX 时间戳的快速 Java 6 实现
如何从 JS 中的 Y-m-d 日期获取 unix 时间戳?