Javascript MomentJS无法将日期字符串更改为新格式

Javascript MomentJS无法将日期字符串更改为新格式,javascript,mysql,momentjs,Javascript,Mysql,Momentjs,我有以下HTML: <strong id="ut-open-date">27/06/2014</strong> 但是代码从2014年6月27日改为2016年6月03日,我不知道为什么 我也尝试了这段代码,得到了同样的结果 var CreateDate = moment(jQuery('#ut-open-date').html()).format("YYYY-MM-DD"); 非常感谢您的帮助。如果我们一步一步地分解您的代码,您可以看到哪里出了问题: var Creat

我有以下HTML:

<strong id="ut-open-date">27/06/2014</strong>
但是代码从2014年6月27日改为2016年6月03日,我不知道为什么

我也尝试了这段代码,得到了同样的结果

var CreateDate = moment(jQuery('#ut-open-date').html()).format("YYYY-MM-DD");

非常感谢您的帮助。

如果我们一步一步地分解您的代码,您可以看到哪里出了问题:

var CreateDate = moment(jQuery('#ut-open-date').html())
此部分使用默认构造函数尝试解析日期,这充其量是不可靠的,已被弃用。所以现在我们要猜测的是这里的日期格式

.format("DD/MM/YYYY");
这是将步骤1中读取的内容转换为DD/MM/YYYY格式的字符串

CreateDate = moment(CreateDate)
现在,您正在再次解析,但没有指定格式,所以现在最好是猜测

.format("YYYY-MM-DD");
现在,您已经告诉它将猜测的日期转换为格式为YYYY-MM-DD的字符串

改为这样做:

var CreateDate = moment(jQuery('#ut-open-date').html(), 'DD/MM/YYYY').format('YYYY-MM-DD');
moment(dateString)
表单已被弃用。您应该改用表单moment(dateString,expectedFormat)

请参阅此处的文档:


多亏了链接的athms

问题在于,您需要通过指定第二个参数来告诉
moment.js
您想要解析的日期字符串的格式。看所有的照片。如果未列出格式(),则需要指定日期格式参数

moment( jQuery('#ut-open-date').html(), "DD/MM/YYYY" )

我使用
拆分解决了它,如下所示:

var CreateDate = jQuery('#ut-open-date').text();
var DateArray = CreateDate.split('/');
CreateDate = DateArray[2] + '-' + DateArray[1] + '-' + DateArray[0];

您使用的是哪个版本的
momentjs
?我使用的是2.5.1。我用split解决了这个问题。见下面我的答案。ThanksSpot on@JackAllan,或var CreateDate=moment(jQuery('ut open date').html(),'DD/MM/YYYY')。格式('YYYY-MM-DD');为了这个例子的目的。顺便说一句,这不是正确的方法。请参阅下面的两个答案,这是最适合您的套件。
var CreateDate = jQuery('#ut-open-date').text();
var DateArray = CreateDate.split('/');
CreateDate = DateArray[2] + '-' + DateArray[1] + '-' + DateArray[0];