如何使用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-yyyy
或dd/mm/yyyy
或dd-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