这个时间戳是什么格式,以及我如何用它自己的时间来格式化它

What format is this timestamp, and how can I format it in its own time

本文关键字:自己的 何用它 时间 格式化 时间戳 是什么 格式      更新时间:2023-09-26

我在javascript中转换时间戳有问题。

我有这个时间戳:

2011-10-26T12:00:00-04:00

我一直试图格式化它是可读的。到目前为止,它使用我的系统的本地时间而不是时间戳中的GMT偏移量来转换它。我知道这是在EST时区创建的,我在PST时区,所以时间偏移了3个小时。

而不是显示为:

Wednesday October 26, 2011 12:00 pm

显示为:

Wednesday October 26, 2011 9:00 am

我尝试了一些不同的解决方案,但最新的一个在这里找到:http://blog.stevenlevithan.com/archives/date-time-format

我不太关心格式部分,因为我在弄清楚如何处理GMT偏移量。

在local区域创建Date对象。如果日期字符串是在不同的时区中创建的,那么您需要调整date对象以允许这种差异。

网络上的缩写词PST和EST有歧义,时区缩写没有标准,有的代表两个或两个时区。您应该仅用+/- UTC或GMT(或多或少是相同的东西)来表示您的区域。

您可以使用Date.prototype获取本地时区偏移量。getTimezoneOffset,它返回以分钟为单位的偏移量,必须添加到本地时间才能获得UTC。计算创建时间字符串的位置的偏移量,并将其应用于创建的日期对象(只需适当地以分钟为单位添加或减去差异)。

如果您的时区是-3小时,getTimezoneOffset对于在该时区创建的日期对象将返回+180。如果字符串来自-4hrs区域,则其偏移量为+240。你可以输入:

var localDate = new Date('2011-10-26T12:00:00') // date from string;
var originOffset = 240;
var localOffset = localDate.getTimezoneOffset();
localDate.setMinutes( localDate.getMinutes() + originOffset - localOffset );

添加原点偏移量将其设置为UTC,减去本地偏移量将其设置为本地时间。

如果服务器发送的时间字符串是UTC格式,那就容易多了,这样你就可以应用本地偏移量了。

编辑

IE不会解析带有偏移量的时间字符串,Chrome认为上述时间字符串是UTC并根据本地偏移量进行调整。因此,不要让Date解析字符串,而是手动执行。

无论您是哪个时区-时间戳将导致每个不同时区的不同本地时间,但它们都将是正确的,任何人检查日期的UTC时间将得到相同的时间戳:

new Date('2011-10-26T12:00:00-04:00').toUTCString()
returns

2011年10月26日星期三16:00:00 GMT

和getTime()返回相同毫秒的通用时间戳:1319644800000

相关文章: