转换时间字符串,例如';下午12:05';在Javascript中使用Date.Parse转换为datetime
我想使用Javascript中的转换时间字符串,例如';下午12:05';在Javascript中使用Date.Parse转换为datetime,javascript,jquery,asp.net,datetime,Javascript,Jquery,Asp.net,Datetime,我想使用Javascript中的Date.Parse将一个时间字符串(12:05pm)转换为一个日期时间。 当我传入一个值时,比如说12:05 PM或12:10 PM或。。。或12:55 PM以下startTime返回的值为空,即startTime=null 但是当我传入1:00 PM、1:05 PM、1:10 PM、12:00 AM、…、12:00 PM的值时,效果很好 还给我一个包含时间的日期 这是导致问题的代码行: var startTime = Date.parse($("#&
Date.Parse
将一个时间字符串(12:05pm)转换为一个日期时间。
当我传入一个值时,比如说12:05 PM或12:10 PM或。。。或12:55 PM以下startTime
返回的值为空,即startTime=null
但是当我传入1:00 PM、1:05 PM、1:10 PM、12:00 AM、…、12:00 PM的值时,效果很好还给我一个包含时间的日期 这是导致问题的代码行:
var startTime = Date.parse($("#<%= StartTime.ClientID %>").val()); //code causing the issue
var startTime=Date.parse($(“#”).val()//导致问题的代码
而StartTime
是一个文本框
我正在web表单上的ASP.NET应用程序中用client/html编写上述代码。有一个很好的日期实用程序。基于此,您可以执行以下操作:
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 );
var startTime=new Date();
变量时间=$(“#”).val().match(/(\d+(:(\d\d))?\s*(p?/);
startTime.setHours(parseInt(time[1])+(time[3]?12:0));
startTime.setMinutes(parseInt(时间[2])| | 0);
我刚刚读到你对你正在使用的另一个问题的回答。如果您确实在使用它,那么您的代码是正确的,那么问题应该是您没有正确加载库,并且您正在使用本机日期对象。如果您使用的是Date.js,请尝试(按照) 如果您正确加载了库,也会出现这种情况 在这里工作正常:
这可能是一个库加载问题,但您声称它在某些时间有效,而在其他时间无效。在将文本框输入到
Date.parse()
)之前,您是否尝试过将文本框的值输出到控制台?是否有效?我的意思是,你可以在时间之前添加一个虚拟日期,然后解析它,只使用时间部分?你是说它在任何时间都有效,除了12:01 PM到12:59 PM之间的时间?嗨,Thirit。我的时间范围为12:00 AM、12:05 AM、1:00 AM、1:05 AM、1:10 AM…12:00 PM、12:05 PM、12:10 PM…1:00 PM,可以以00:05分钟为增量输入任何时间。因此,上述代码对于正则表达式setHours和setMinutes是否有效。请告诉我。提前谢谢。这似乎与下午12:00有问题。假设“pm”应该加12个小时是有问题的。在调试时的QuickWatch中,我得到的值是$(“#”).val()=“12:05 pm”。但是当我把它放到Date.parse中时,它是空的。在同一个quickwatch窗口中,我将日期“1:05pm”放入date.parse方法中,这样就可以了。我认为Date.parse不喜欢12的增量,当它们是PM时。CDN不再有效,所以脚本默认为标准的Date.parse()。我修复了JSFIDLE,现在应该可以工作了。假设我的日期字符串是“12:05 PM”,那么传递到date.parseExtract中的参数格式是什么。
Date.parseExact("12:05 PM", "hh:mm tt");