我有一个来自Java Server的日期格式:
YYYY/MM/DD 00:00:00.0
这是JavaScript不接受的格式。所以,我这样做:
var startDate = '2012-07-27 00:00:00.0';
startDate = startDate.substring(0, 10);
然后返回2012-07-27
。 (注意:我试着用时间而没有)
但是,我希望将其转换为可用于比较两个日期的日期格式。所以,我预先形成了这个:
startDate = new Date(startDate);
最后,在日志中返回此内容:Invalid Date
所以,为了比较日期,如下:
if(currentDate > startDate)
我需要能够将我所拥有的格式转换为可接受的格式,以便我可以比较各个日期。
谢谢!
答案 0 :(得分:0)
您的字符串格式不兼容,这就是新Date(datestring)不起作用的原因。您可以使用Regex自己解析字符串,并创建一个新的Date对象,其中包含年,月,日,分和秒的显式值。查看Date.parse的有效格式
在解析字符串后使用此https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/UTC 你的字符串的例子是
gmtDate = new Date(Date.UTC(2012, 07, 27, 0, 0, 0));
答案 1 :(得分:0)
答案 2 :(得分:0)
如果允许使用javascript库,可以使用datejs(datejs.com)和Date.parseExact()函数:
Date.parseExact(startDate, "yyyy/MM/dd")
或者,如果您不能或不喜欢使用库来实现此目的,您可以使用正则表达式封装自定义逻辑以将此字符串转换为正确的日期,例如ama2建议通过:
Date.parseExact = function(dateString, format) { ... your implementation here }
答案 3 :(得分:-1)
如果您的日期使用24小时制,而不是12小时AM / PM,并且它们始终采用该确切格式,则直接字符串比较将产生正确的结果。换句话说,
'2012-07-27 00:00:00.0' > '2012-07-26 00:00:00.0' === true
'2012-07-27 00:00:00.0' > '2012-07-26 23:59:99.9' === true
'2012-07-27 10:00:00.0' > '2012-07-27 12:00:00.0' === false
有时最简单的方法就在你面前;)