dd = "2012-08-20 01:16:00";
この日付をタイムスタンプに変換する場合(次のコードのように)
var t = new Date(dd).getTime();
http://jsfiddle.net/userdude/DHxwR/
結果t = NaN
なぜ?
dd = "2012-08-20 01:16:00";
この日付をタイムスタンプに変換する場合(次のコードのように)
var t = new Date(dd).getTime();
http://jsfiddle.net/userdude/DHxwR/
結果t = NaN
なぜ?
ECMA-262 (§15.9.1.15、Date Time String Format 、169 ページ) によると、受け入れられる必要がある唯一の日付文字列形式は次のとおりです。
[+YY]YYYY[-MM[-DD]][THH:mm[:ss[.sss]]]Z
ここで、Z
は(UTC の場合) または aまたは a の後に が続くZ
オフセットです。特定のブラウザーでたまたまサポートされているその他の形式は、継続的なサポートが保証されていないため、依存しないでください。+
-
HH:mm
したがって、コンストラクターに渡す前に、スペースを a に置き換え、T
a または固定タイム ゾーン オフセットを追加します。たとえば、日付と時刻が UTC+8 ゾーンにある場合:Z
Date
var dd = "2012-08-20 01:16:00";
var t = new Date(dd.replace(' ', 'T') + '+08:00').getTime();
これは、1970 年 1 月 1 日午前 0 時 (UTC) から指定した日付までのミリ秒数を返します。これは、世界時 ( を追加した場合Z
) または指定した固定タイム ゾーン オフセットのローカル時間として扱われます。
質問の例のように、日付がユーザーのシステムタイムゾーンのローカル時間として単純に扱われるわけではないという点で、これは異なる動作をすることに注意してください。ただし、ユーザーの構成によって異なる結果が得られるため、それが役立つ状況は考えられませんが、実際には、2 つの日付の時差はどこにいても常に同じです。
年、月、日の値の間にスペースまたはコンマを使用してみてください。
それは簡単です:
+(new Date("2012-08-20 01:16:00"));