2012-01-11 4 views
9

YoutubeのAPIは、動画の配列を含むJSONオブジェクトを返します。各動画オブジェクトの公開日は「2012-01-11T20:49:59.415Z」のようになります。以下のコードを使用してJavascript Dateオブジェクトを初期化すると、オブジェクトは「無効な日付」を返します。Youtube APIの日付をJavaScriptで解析する

var dt = new Date("2012-01-11T20:49:59.415Z"); 

iOS /モバイルSafariでこれを使用しています(違いがある場合)。

有効なオブジェクトを作成する方法に関する提案やアイデアはありますか?

答えて

3

私はhttp://zetafleet.com/blog/javascript-dateparse-for-iso-8601で解決策を見つけることになりました。日付は 'ISO 8601'という形式になっているようです。以前のブラウザ(Safari 4、Chrome 4、IE 6-8)では、ISO 8601はサポートされていないため、Date.parseは機能しません。リンクのブログ記事から参照コードは、ISOにサポートするために、現在の日付クラスを拡張8601このページはユーチューブを解析するコードを持っている(ISO 8601)は、日付オブジェクトにさかのぼり

0

日付の一部だけが必要な場合(たとえば、時間やタイムゾーンを気にしない場合など)、日付文字列のその部分を削除することができます。

+0

私はDateオブジェクトからミリ秒を引っ張って "21 days ago"のような相対的な日付を生成しようとしています。 –

+0

これは、ISO 8601スクリプトを使用して日付のレンダリングを完了すると簡単です。グローバルな新しい日付をISO 8601の日付オブジェクトに解析し、 "現在の日付"から "投稿された日付"を差し引く... –

4

エポックからのミリ秒数をとるJavaScriptのDate.parse(string)Date constructorを試してみてください。 「解析」機能は、任意のブラウザ上で有効なISO8601の日付を受け入れる必要があります。例えば

var d = new Date(Date.parse("2012-01-11T20:49:59.415Z")); 
d.toString(); // => Wed Jan 11 2012 15:49:59 GMT-0500 (EST) 
d.getTime(); // => 1326314999415 
+0

これは古いブラウザでは機能しません。私はこれをiOS 4.2.1とiOS 5.0.1でテストしています。 iOS 4は失敗し、iOS 5は機能しません。 –

3
var dt = "2012-01-11T20:49:59.415Z".replace("T"," ").replace(/\..+/g,"") 
dt = new Date(dt);