我正在尝试让JavaScript为我解析日期和时间格式,最终目的是告诉我自该日期以来的日子和现在(本地)的时间。
不幸的是,我必须使用的日期格式(它来自我无法控制的JSON响应)以2008-10-01 06:21:43类型格式返回它。
var thedate = "2008-10-01 06:21:43";
var inmillisecs = new Date(thedate);
这只会从JavaScript返回一个错误,告诉我日期无效。
如何解决此问题?
答案 0 :(得分:8)
这应该这样做
function dateFromUTC( dateAsString, ymdDelimiter )
{
var pattern = new RegExp( "(\\d{4})" + ymdDelimiter + "(\\d{2})" + ymdDelimiter + "(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})" );
var parts = dateAsString.match( pattern );
return new Date( Date.UTC(
parseInt( parts[1] )
, parseInt( parts[2], 10 ) - 1
, parseInt( parts[3], 10 )
, parseInt( parts[4], 10 )
, parseInt( parts[5], 10 )
, parseInt( parts[6], 10 )
, 0
));
}
alert( dateFromUTC( "2008-10-01 06:21:43", '-' ) );
答案 1 :(得分:3)
这个漂亮的图书馆名为DateJS。我对它没有经验,但你可能会发现它很有用。我认为您对parse()
和/或parseExact()
特别感兴趣。
我最初是从this SO post听到的。
干杯。
编辑:我刚刚注意到你提到的时间,我不确定DateJS会处理时间,所以我会快速调查一下,否则你可以忽略这篇文章:)答案 2 :(得分:2)
预期格式为美国格式:m/d/yyyy hh:mm:ss
var date1 = new Date("2008-10-01 06:21:43"); //fails
var date2 = new Date("10/1/2008 06:21:43"); //works correctly
答案 3 :(得分:1)
这是一个ISO 9601日期 - 它们是一个很好的标准。尝试使用正则表达式对其进行修改:
(\d{4})-(\d{2})-(\d{2})[ tT](.*)
到
\2/\3/\1 \4
答案 4 :(得分:0)
正确的语法应该是:
var thedate = "Oct 1, 2008 06:21:43"; var inmillisecs = new Date(thedate);
您必须采取一些步骤将您收到的String转换为我显示的格式。使用美国格式也可以
var thedate = "10/1/2008 06:21:42"; var inmillisecs = new Date(thedate);
答案 5 :(得分:-1)
它必须是parse()函数可识别的字符串。
http://www.devguru.com/technologies/javascript/10585.asp查看dateString param