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 に答える