Javascript将“05/27 11:00 pm”转换为日期?

时间:2009-06-01 18:21:59

标签: javascript

如何将没有一年的日期字符串转换为JS Date对象?如何将带有年份和时间的日期字符串转换为JS Date对象?

5 个答案:

答案 0 :(得分:4)

许多不同的日期格式只需将它们传递给Date()构造函数即可转换为日期对象:

var date = new Date(datestring);

您的示例日期有两个原因无效。首先,它没有一年。其次,“pm”之前需要有一个空格(我不知道为什么)。

// Wed May 27 2009 23:00:00 GMT-0700 (Pacific Daylight Time)
var date = new Date("2009/05/27 11:00 pm")

如果您收到的日期格式一致,可以通过以下方式修复:

var datestring = "05/27 11:00pm";
var date = new Date("2009/" + datestring.replace(/\B[ap]m/i, " $&"));

答案 1 :(得分:3)

我使用Datejs库的解析方法。

http://www.datejs.com/

我试过你的例子,它工作得很好......

5/27 11:00 pm

2009年5月27日星期三下午11:00:00

答案 2 :(得分:1)

我使用Dojo时间解析器来执行以下操作:

检查出来: http://api.dojotoolkit.org/jsdoc/HEAD/dojo.date.locale.parse

答案 3 :(得分:0)

不是最干净的,但有效:

var strDate = '05/27 11:00pm';
var myDate = ConvertDate(strDate, '2009');

function ConvertDate(strWeirdDate, strYear)
{
    strWeirdDate = strWeirdDate.replace(/ /, '/' + strYear + ' ');
    return new Date(strWeirdDate);
}

也可能首先修剪字符串。

答案 4 :(得分:0)

我写的另一个选项是:

DP_DateExtensions Library

它有一个日期/时间解析方法 - 传入一个掩码,它将验证输入并返回一个匹配的数据对象。

还支持日期/时间格式,日期数学(加/减日期部分),日期比较,专业日期解析等。它是自由开源的。