Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Unix时间戳创建日期忽略时区_Javascript_Date_Datetime_Momentjs - Fatal编程技术网

Javascript 从Unix时间戳创建日期忽略时区

Javascript 从Unix时间戳创建日期忽略时区,javascript,date,datetime,momentjs,Javascript,Date,Datetime,Momentjs,对于ODataREST服务,我使用Moment.js根据Unix时间戳创建日期,我希望忽略时区。 我的日期是“2013-12-24”,即1387839600秒 使用 结果是“2013-12-23T23:00:00.000Z”,因为我住在GMT+1。 通过使用 moment.utc("2013-12-24", "YYYY-MM-DD").toISOString() 我得到了“2013-12-24T00:00:00.000Z”,这正是我想要的。我可以简单地在结尾删除祖鲁时间的“Z” 但我的日期的真

对于ODataREST服务,我使用Moment.js根据Unix时间戳创建日期,我希望忽略时区。 我的日期是“2013-12-24”,即1387839600秒

使用

结果是“2013-12-23T23:00:00.000Z”,因为我住在GMT+1。 通过使用

moment.utc("2013-12-24", "YYYY-MM-DD").toISOString()
我得到了“2013-12-24T00:00:00.000Z”,这正是我想要的。我可以简单地在结尾删除祖鲁时间的“Z”

但我的日期的真实表示形式是Unix时间戳。所以如果我这样做了

moment.utc(1387839600, "X").toISOString()
我总是得到“2013-12-23T23:00:00.000Z”,但我希望它返回“2013-12-24T00:00:00.000Z”

我的错在哪里?
谢谢你的帮助

Unix时间戳(以秒或毫秒为单位)始终以UTC为单位。值
1387839600
实际上是2013-12-23 UTC晚上11:00。你用它来验证

如果希望时间为UTC午夜的2013-12-24,则时间戳应为
1387843200

所以这一时刻是正确的。您应该关注RESTAPI,并确保它正确地发出UTC而不是本地时间值

另外,如果只需要日期部分,则不要使用
.toISOString
。相反,请使用
.format
,例如:

moment.utc(1387843200, 'X').format('YYYY-MM-DD')

你可以“编制”自己的格式。任何需要按原样复制(不插入)的字符串都应包含在括号内

因此,在您的情况下,这应该是可行的:

moment(1387839600, 'X').format('YYYY-MM-DD[T00:00:00.000]')

不要使用
toISOString()
。相反,请使用以下内容:

moment.utc(1387839600, "X").utcOffset(1).format('YYYY-MM-DD') + "[T" + moment.utc(1387839600, "X").utcOffset(1).format('HH:mm:ss.000]')

调整onChange功能后,如

onChange函数可以如下所示:

onChange:函数(值){
log({myDate:moment.utc(值'x').format('YYYY-MM-DDTHH:MM:ss.SSSZ'))});
},

似乎onChange值作为Unix ms时间戳(x)而不是Unix时间戳(x)出现,以防混淆


这应该使用矩.utc(矩(“1387839600”,“X”).format(“L”),“DD.MM.YYYY”).toISOString()打印一个字符串,如
2015-07-15T15:02:00.000+00:00

,但这似乎相当复杂!?或者只是
moment(1387839600,'X')。格式('YYYY-MM-DDT00:00:00.000')
?谢谢@robertklep,我想接受你的评论作为我问题的答案,但很遗憾,我无法将你的评论提升为完整答案。。。
moment.utc(1387839600, "X").utcOffset(1).format('YYYY-MM-DD') + "[T" + moment.utc(1387839600, "X").utcOffset(1).format('HH:mm:ss.000]')