Unix日期JavaScript:带有时区的时刻给出了错误的结果

时间:2018-01-24 12:03:29

标签: javascript node.js momentjs unix-timestamp

我正在尝试从unix时间戳和时区获取日期字符串

let moment = require('moment-timezone'); 
    let date = moment.unix(1516812300).tz('Asia/Kolkata').format('YYYY-M-DD-H-mm-s');

正确的日期为2018/01/24 16:45:00,时区为Asia/Kolkata,但上面的代码会返回此2018-1-24-22-15-0

1 个答案:

答案 0 :(得分:0)

Unixtime没有'timezones'。你可以认识到它总是在UCT中。同样的unixtime总会在不同的时区产生不同的“人”时间。 1516812300实际上是2018年1月24日星期三22:15:00(下午)亚洲/加尔各答(IST)时区。因为在宇宙的任何地方,月亮,加尔各答或伦敦,unixtime在同一时刻是相同的。所以,当你有一天,在加尔各答可能是晚上,而unixtime是完全相同的。所以,你的2018/01/24 16:45:00 UCT将在22:15:00接收到加尔各答。