我现在一直在与此斗争 . 我正在尝试将纪元转换为日期对象 . 时代以UTC发送给我 . 每当你传递 new Date()
一个纪元时,它就会假定它是本地纪元 . 我尝试创建一个UTC对象,然后使用 setTime()
将其调整到正确的纪元,但唯一有用的方法是 toUTCString()
,字符串对我没有帮助 . 如果我将该字符串传递给新的日期,它应该注意到它是UTC,但事实并非如此 .
new Date( new Date().toUTCString() ).toLocaleString()
我的下一次尝试是尝试获取当地当前时期和UTC当前时期之间的差异,但我也无法得到它 .
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
它只给了我很小的差异,低于1000,这是毫秒 .
有什么建议?
13 回答
而对于日志,我使用Moment.js库来完成这个,我正在使用它进行格式化 .
我想我有一个更简单的解决方案 - 将初始日期设置为纪元并添加UTC单位 . 假设您有一个UTC纪元var存储在几秒钟内 .
1234567890
怎么样?要将其转换为本地时区中的正确日期:d
现在是一个日期(在我的时区)设置为Fri Feb 13 2009 18:31:30 GMT-0500 (EST)
首先将其转换为String,然后替换时区文本 .
如果您希望在没有像moment.js这样的库的情况下解决UTC和当地时间的时间戳和日期转换,请查看下面的选项 .
对于使用UTC时间戳的应用程序,您可能需要在适用时考虑本地时区和夏令时在浏览器中显示日期 . 即使在同一时区内编辑处于不同夏令时的日期也很棘手 .
下面的
Number
和Date
扩展允许您在时间戳的时区中显示和获取日期 . 例如,假设您在温哥华,如果您在7月或12月编辑日期,则可能意味着您正在编辑PST或PDT中的日期 .我建议您查看下面的代码片段以测试此解决方案 .
Conversions from milliseconds
Conversions from dates
Usage
See it for yourself
您是否只是要求将UTC字符串转换为“本地”字符串?你可以这样做:
@Amjad,好主意,但实施得很差 . 尝试
除了@djechlin的上述答案
将EPOCH时间转换为人类可读日期 . 只是不要忘记EPOCH时间必须是整数 .
这很容易,
new Date()
只需要几毫秒,例如纪元时间是1970年1月1日以秒为单位.
date.getTime()
从1970年1月1日起返回毫秒,所以..如果你有一个纪元时间戳,请将它转换为javascript时间戳乘以1000 .要将[ms]中的当前纪元时间转换为24小时制 . 您可能需要指定disable 12-hour格式的选项 .
或作为JS:
Note: 这里使用
en-GB
只是一个(随机)选择使用24小时格式的地方,它不是你的时区!考虑到,你有
epoch_time
,EDIT
EDIT 已修复