convert a time string say '12:05 PM' into

2020-03-28 01:50发布

问题:

I want to convert a time string say '12:05 PM' into a datetime using Date.Parse in javascript. When I pass in a value of say 12:05 PM or 12:10 PM or ... or 12:55 PM the value returned by startTime below is null, i.e. startTime = null

But when I pass in values of 1:00 PM, 1:05 PM, 1:10 PM, 12:00 AM,...,12:00 PM it works fine
returning me a Date with the time included.

This is the code line causing an issue:

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

And StartTime is a textbox.

I am writing the above code in client/html in an ASP.NET application on the web form.

回答1:

If you're using date.js then try (as per test case here)

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

This should also pick up if you've loaded the library correctly.



回答2:

It works fine here:

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

It's possible that it is a library loading issue, but you claim it works on some times and not others. Have you tried outputting the value of the text box to the console before feeding it to Date.parse()?



回答3:

there's a good utility for dates named date.js.



回答4:

Based on this answer you can do this:

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 );

I just read on your reply to the other question that you are using date.js. If you really are using it, your code is correct, then the problem should be that you are not loading the library properly, and you are using the native Date object.