【问题标题】:Javascript - Create new Date using a UK format and moment.jsJavascript - 使用英国格式和 moment.js 创建新日期
【发布时间】:2016-10-11 08:18:51
【问题描述】:

我有一个英国格式“DD/MM/YYYY HH:mm”的日期,我想用 javascript 创建一个新日期。我正在使用 moment.js 尝试以下操作,但它无法识别时间部分,只是添加了当前时间。

 var myDate = "11/10/2016 09:00"

 // The toDate() is equivalent to the javascript new Date() function
 var newDate = moment(myDate, "YYYY-MM-DD HH:mm").val()).toDate();

 // output:
 // 20161011T091406Z 
 // Tue Oct 11 2016 09:14:06 GMT+0100

如您所见,它已将时间部分更改为脚本运行的时间。

【问题讨论】:

  • 您的日期格式似乎与输入完全不匹配 - 这是故意的吗?
  • 按照建议,您必须将格式更正为与输入字符串匹配的格式。您将拥有:var newDate = moment(myDate, "DD/MM/YYYY HH:mm").toDate();
  • @jonrsharpe 和 VincenzoC 你们两个都不正确。我正在使用 moment.js 将现有格式解析为 javascript iso 格式。阅读时刻文档:momentjs.com/docs/#/parsing/string-format
  • @adam78 我很高兴您使用我之前评论中的提示解决了您的问题(所以 jonrsharpe 和我都是对的):)

标签: javascript date momentjs


【解决方案1】:

通过执行以下操作自己弄清楚了:

var myDate = "11/10/2016 09:00"

myDate  = moment(myDate, "DD/MM/YYYY HH:mm").toISOString();

var newDate = moment(myDate).toDate(); 

【讨论】:

  • 您正在将字符串解析为矩对象,然后将其作为字符串输出,然后您再次解析为矩对象并调用 toDate,这是低效的。按照 VincenzoC 的建议尝试 moment(myDate, "DD/MM/YYYY HH:mm").toDate()。或者写一个两行函数来做同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多