大家好,我已经看了几个问题,但尚未找到问题的可靠答案。我已经看过的问题包括:
我的问题如下:
我有一个基本时间选择器,时间范围从凌晨4:00到晚上8:00。我想使用选择的时间和硬编码日期来格式化这样的内容:
"2015-05-03T04:00:00"
这是我到目前为止所拥有的:
time = moment("2015/05/09 " + filterText, "America/New_York")
console.log(time.format())
其中filterText是select:"4:00AM"
我如何构建类似于"2015-05-09T04:00:00"
?
截至目前,我正在接受以下内容:"2015-02-27T08:20:00+00:00"
当我删除时区时,我会得到更接近的东西,但时间不会改变:
time = moment("2015/05/09 " + filterText)
console.log(time.format())
"2015-05-09T08:00:00-07:00" <--- remains at 7:00 even if filterText is 8:00 or 9:00
答案 0 :(得分:1)
您可以使用:
time = moment("2015/05/09 " + filterText);
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
答案 1 :(得分:0)
你应该specify a format string when parsing:
time = moment("2015-05-09 " + filterText, "YYYY-MM-DD hh:mmA");
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
来自moment.js docs
警告:浏览器对解析字符串的支持不一致。因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的功能在其他浏览器中不起作用。
为了解析除ISO 8601字符串以外的任何其他内容的一致结果,您应该使用String + Format。
如果您没有传递格式字符串,可能会获得正确的结果,或者可能不会。您将在控制台日志中看到以下消息:
弃用警告:时刻构建回落到日期。这是不鼓励的,将在即将发布的主要版本中删除。有关详细信息,请参阅https://github.com/moment/moment/issues/1407。
此外,您可能不需要为此目的传递时区。但是,如果你需要它是特定于时区的,那将是错误的方法。 moment
函数不接受时区参数。您需要使用moment-timezone插件,并将其传递给tz
功能,如下所示:
time = moment.tz("2015-05-09 " + filterText, "YYYY-MM-DD hh:mmA", "America/New_York");
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));