3

我正在尝试解析2012-12-07T16:18:15+05:30我从数据库中以字符串格式接收的日期。我正在使用的解析函数是:

var jstime = new Date("2012-12-07T16:18:15+05:30"); 
 var h = jstime.getHours();
var m = jstime.getMinutes();
var s = jstime.getSeconds();
var f = "am"
if(h >= 12)
{
    f = "pm";
    h = h - 12;
}
if(h == 0)
{
    h = 12;
}
var str;
str = jstime.toDateString();
str = str +"," + h.toString() + ":" + m.toString() + ":" + s.toString() + " " + f.toString(); 

但是,IE8 浏览器在第一行返回 NAN,即 jstime 在 IE8 中是 NAN,而在其他浏览器中工作正常。
那么,是否有任何替代方法来解析在所有浏览器中都能正常工作的日期?
我需要它接受上述格式的日期并以格式返回日期: Fri Dec 07 2012,4:18:15 pm

4

2 回答 2

3

如果您可以确定格式,则可以对其进行正则表达式:

var match = "2012-12-07T16:18:15+05:30".match(/(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)([+-])(\d\d):(\d\d)/);
var jstime = new Date();
jstime.setUTCFullYear(parseInt(match[1],10));
jstime.setUTCMonth(parseInt(match[2],10)-1);
jstime.setUTCDate(parseInt(match[3],10));
jstime.setUTCHours(parseInt(match[4],10)-parseInt(match[7]+"1",10)*parseInt(match[8],10));
jstime.setUTCMinutes(parseInt(match[5],10)-parseInt(match[7]+"1",10)*parseInt(match[9],10));
jstime.setUTCSeconds(parseInt(match[6],10));

但如果它来自服务器端,您可以在那里更可靠地格式化它。

于 2012-12-07T07:22:28.313 回答
-1

你可以这样做 -

date = Date.parse("2012-12-07T16:18:15+05:30");
var jstime = new Date(date); 
var h = jstime.getHours();
var m = jstime.getMinutes();
var s = jstime.getSeconds();
continue your code .....

我想这会对你有所帮助。

于 2012-12-07T07:26:23.360 回答