问题描述
当我尝试使用本地时间格式化日期时遇到问题(我以前没有):
var dateStartFormat = "2021-1-8 08:00"
var romeStart = moment.tz(dateStartFormat,"Europe/Rome");
var romeStartFormat = romeStart.format();
romeStartFormat 应该给我:2021-01-08T08:00:00+01:00 相反,他增加了一个小时并给了我:2021-01-08T**09:00:**00+01:00
我没有更改代码中的任何内容,直到几天前它才起作用。
解决方法
“几天前”您可能还在 12 月底,因此时间戳应该类似于 "2020-12-28 08:00"
。现在在 1 月你会得到一个像 "2021-1-8 08:00"
这样的时间戳,它不是 momentjs 的有效输入格式。 Momentjs 需要 RFC2822 或 ISO 格式作为输入,因此日和月都必须用两位数字给出(因此如果
考虑到这一点,此代码段应返回预期结果。
let
date1 = "2021-01-08 08:00",date2 = "2021-1-8 08:00"
//use a proper formated timestamp
let
start1 = moment.tz(date1,"Europe/Vienna"),format1 = start1.format();
//provide a format specifier
let
start2 = moment.tz(date2,"yyyy-M-D HH:mm",format2 = start2.format();
console.log(format1);
console.log(format2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.32/moment-timezone-with-data.min.js"></script>
您应该将格式添加到 momnet.tz()
var dateStartFormat = "2021-1-8 08:00"
var romeStart = moment.tz(dateStartFormat,"YYYY-M-D HH:mm","Europe/Rome");
var romeStartFormat = romeStart.format();