使用javascript中的Date.Parse将时间字符串说'12:05 PM'转换为日期时间

时间:2012-03-15 23:01:04

标签: javascript jquery asp.net javascript-events

我想在javascript中使用Date.Parse将时间字符串说'12:05 PM'转换为日期时间。 当我传入下午12:05或下午12:10或......或下午12:55的值时,下面的startTime返回的值为空,即startTime = null

但是当我通过下午1点,下午1点05分,下午1点10分,上午12点,......,中午12点的值时,它工作正常 给我一个包含时间的日期。

这是导致问题的代码行:

var startTime = Date.parse($("#<%= StartTime.ClientID %>").val());  //code causing the issue

StartTime是一个文本框。

我正在web表单上的ASP.NET应用程序中的client / html中编写上述代码。

4 个答案:

答案 0 :(得分:3)

如果您正在使用date.js,请尝试(根据test case here

Date.parseExact("12:05 PM", "hh:mm tt");

如果您正确加载了库,也应该这样做。

答案 1 :(得分:2)

这里工作正常:

http://jsfiddle.net/vuURb/396/

它可能是一个库加载问题,但您声称它可以在某些时候运行而不是其他运行。您是否尝试将文本框的值输出到控制台,然后再将其输入Date.parse()

答案 2 :(得分:1)

对于名为date.js的日期,有一个很好的实用工具。

答案 3 :(得分:1)

基于this answer,你可以这样做:

var startTime = new Date();
var time = $("#<%= StartTime.ClientID %>").val().match(/(\d+)(?::(\d\d))?\s*(p?)/);
startTime.setHours(parseInt(time[1]) + (time[3] ? 12 : 0) );
startTime.setMinutes( parseInt(time[2]) || 0 );

我刚刚阅读了您对使用date.js的其他问题的回复。如果你真的在使用它,你的代码是正确的,那么问题应该是你没有正确加载库,并且你正在使用本机Date对象。