如何使用JavaScript或jQueryparsing“dd / mm / yyyy”或“dd-mm-yyyy”或“dd-mmm-yyyy”格式的datestring

可能重复:
扩展JavaScript的Date.parse以允许DD / MM / YYYY(非美国格式的date)?
将dd-mm-yyyystring转换为date

在文本框中inputdate,例如: 05/09/1985 ,我想将它转换为1985年9月5日 (dd-MMM-yyyy)格式。 我将如何实现这一目标? 请注意,源格式可能是dd-mm-yyyydd/mm/yyyydd-mmm-yyyy格式。

代码片段:

  function GetDateFormat(controlName) { if ($('#' + controlName).val() != "") { var d1 = Date.parse($('#' + controlName).val()); if (d1 == null) { alert('Date Invalid.'); $('#' + controlName).val(""); } var array = d1.toString('dd-MMM-yyyy'); $('#' + controlName).val(array); } } 

这个代码返回1985年 5月9 日,但我想要1985年9月5日 。 谢谢。

您可能需要使用像http://momentjs.com/这样的帮助程序库,它会封装原生的javascriptdate对象,以便于操作;

然后你可以做这样的事情:

 var day = moment("12-25-1995", "MM-DD-YYYY"); 

要么

 var day = moment("25/12/1995", "DD/MM/YYYY"); 

然后在date上进行操作

 day.add('days', 7) 

并获得本机的JavaScriptdate

 day.toDate(); 

更新

下面你说:

对不起,我不能预测date格式之前,它应该像dd-mm-yyyy或dd / mm / yyyy或dd-mmm-yyyy格式最后我想将所有这种格式转换为dd-MMM-yyyy格式。

完全改变了这个问题。 如果你不能控制格式,那将会复杂得多。 JavaScript中没有内容可以让你指定一个date格式。 正式的,JavaScript支持的唯一date格式是ISO-8601 : yyyy-mm-dd的简化版本 ,尽pipe实际上几乎所有的浏览器也都支持yyyy/mm/dd 。 但除此之外,你必须自己编写代码或(更有意义)使用一个好的库。 我可能会使用像moment.js或DateJS库(虽然DateJS多年来没有维护)。


原始答案

如果格式总是 dd/mm/yyyy ,那么这是微不足道的:

 var parts = str.split("/"); var dt = new Date(parseInt(parts[2], 10), parseInt(parts[1], 10) - 1, parseInt(parts[0], 10)); 

split在给定分隔符上拆分string。 然后我们使用parseInt将string转换为数字,我们使用new Date构造函数从这些部分构buildDate :第三部分将是年,第二部分是本月,第一部分是当天。 Date使用从零开始的月份数字,所以我们必须从月份数字中减去一个。

Date.parse只能识别特定的格式,而不能告诉它你的input格式是什么。 在这种情况下,它认为input的格式是mm/dd/yyyy ,所以结果是错误的。

要解决这个问题,你需要自己parsinginput(例如使用String.split ),然后手动构造一个Date对象,或者使用一个function更全面的库,例如datejs 。

手动parsing示例:

 var input = $('#' + controlName).val(); var parts = str.split("/"); var d1 = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0])); 

使用date.js的例子:

 var input = $('#' + controlName).val(); var d1 = Date.parseExact(input, "d/M/yyyy"); 

尝试这个:

  function GetDateFormat(controlName) { if ($('#' + controlName).val() != "") { var d1 = Date.parse($('#' + controlName).val().toString().replace(/([0-9]+)\/([0-9]+)/,'$2/$1')); if (d1 == null) { alert('Date Invalid.'); $('#' + controlName).val(""); } var array = d1.toString('dd-MMM-yyyy'); $('#' + controlName).val(array); } } 

RegExpreplace.replace(/([0-9]+)\/([0-9]+)/,'$2/$1')更改日/月的位置。

看到这个http://blog.stevenlevithan.com/archives/date-time-format

你可以用date做任何事情。

文件: http : //stevenlevithan.com/assets/misc/date.format.js

添加到您的HTML代码使用脚本标签,并使用您可以使用它:

 var now = new Date(); now.format("m/dd/yy"); // Returns, eg, 6/09/07