0

我有一个来自 Java 服务器的日期格式如下:

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)

我需要能够将我拥有的格式转换为可以接受的格式,这样我就可以比较每个不同的日期。

谢谢!

4

4 回答 4

0

您的字符串格式不兼容,这就是 new Date(datestring) 不起作用的原因。您可以使用 Regex 自己解析字符串并创建一个新的 Date 对象,其中包含 year、month、date、minute 和 second 的明确值。查看 Date.parse的有效格式

或在解析字符串示例后使用此https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/UTC将是

gmtDate = new Date(Date.UTC(2012, 07, 27, 0, 0, 0));
于 2012-07-27T22:06:11.000 回答
0

你可以使用Zetafleets - javascript dateparse for iso 8601

于 2012-07-27T22:12:14.417 回答
0

如果允许使用 javascript 库,则可以使用 datejs (datejs.com) 和 Date.parseExact() 函数:

Date.parseExact(startDate, "yyyy/MM/dd")

或者,如果您不能或不喜欢为此目的使用库,则可以封装自定义逻辑,以使用正则表达式将此字符串转换为正确的日期,例如 ama2 通过以下方式建议:

Date.parseExact = function(dateString, format) { ... your implementation here } 
于 2012-07-27T22:15:17.783 回答
-1

如果您的日期使用 24 小时制,而不是上午/下午 12 小时制,并且它们始终采用该精确格式,则直接字符串比较将产生正确的结果。换句话说,

'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

有时最简单的方法就在您面前;)

于 2012-07-27T22:23:08.920 回答