我的服务器返回日期数据作为本地时区时间戳。
在客户端,我想将这些日期显示为本地日期字符串。如果我执行以下操作,则日期输入错误(“ 6/30/2014”而不是“ 7/01/2014”)
var ts = 1404172800;
new Date(1404172800*1000).toLocaleDateString()
>>>"6/30/2014"
为防止出现此问题,我想我必须在创建new Date()
对象之前将从服务器收到的本地时区时间戳转换为UTC时间戳。
我是对的吗?在大多数浏览器上都能实现的最佳方法是什么?
修改:
我确认本地时区的实际日期应为7/01/2014。那是当地的东部时间UTC -5(-4)。但是new Date()
对象认为这是UTC,但不是。我想这是因为日期是作为时间戳返回的,而没有转换为UTC。
答案 0 :(得分:2)
不是吗? Timestamps are always in UTC。
您看到的是6月30日,而不是7月1日,因为当该事件发生时,在 local 时区仍然是6月30日。例如,对我来说,它在IST中显示为7月1日。
此外,此时间戳代表的事件恰好发生在2014年7月1日格林尼治标准时间00:00:00。如屏幕截图所示,印度是GMT + 05:30-因此,如果 local 时区,即使是GMT减去一分钟,也仍然是6月30日。