[英]Formatting momentjs date-time
大家好,我看过几个SO问题,但还没有找到我问题的可靠答案。 我已经看过的问题包括:
我的问题如下:
我有一个基本的时间选择器,时间在4:00 am-8:00 pm之间。 我想使用选择的时间和一个硬编码的日期来格式化如下所示的内容:
"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
您可以使用此:
time = moment("2015/05/09 " + filterText);
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
time = moment("2015-05-09 " + filterText, "YYYY-MM-DD hh:mmA");
console.log(time.format("YYYY-MM-DDTHH:mm:ss"));
从moment.js文档
警告:浏览器对字符串的支持不一致。 因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的格式在其他浏览器中无效。
为了获得一致的解析ISO 8601字符串以外的结果的结果,应使用字符串+格式。
如果不传递格式字符串,则可能会得到正确的结果,也可能不会。 您将在控制台日志中看到以下消息:
弃用警告:构建时间回落到js日期。 不建议这样做,并将在即将发布的主要版本中将其删除。 请参阅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"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.