JavaScriptでISO日付をミリ秒に変換する


89

ISO日付をミリ秒に変換できますか?たとえば、このISOを変換したい

2012-02-10T13:19:11+0000

ミリ秒まで。

作成日と現在の日付を比較したいからです。また、作成日はISO日付です。


1
「ミリ秒」とは正確にはどういう意味ですか?どの時点からのミリ秒?UNIXタイムスタンプを意味しますか?
ペッカ2012

yahoo apiの場合と同様に、日付はミリ秒単位1328796537で表示されますが、fb apiの場合、日付はisoで表示されます2012-02-10T13:18:45+0000
Robin Carlo Catacutan 2012


@mplungjanに関連していますが、正確ではありません。2回の違いを知りたい。
ロビンカルロカタクタン2012

だから、最初の日付にそれらを翻訳して行うためにリンクを使用するdate1.getTime() - date2.getTime()-それはあなたが必要とするすべてである
mplungjan

回答:


151

これを試して

var date = new Date("11/21/1987 16:00:00"); // some mock date
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative

console.log(milliseconds);

編集

ISO日付を指定しました。Dateオブジェクトのコンストラクターによっても受け入れられます

var myDate = new Date("2012-02-10T13:19:11+0000");
var result = myDate.getTime();
console.log(result);

編集

私が見つけた最善の方法は、オフセットを手動で取り除くことです。

var myDate = new Date("2012-02-10T13:19:11+0000");
var offset = myDate.getTimezoneOffset() * 60 * 1000;

var withOffset = myDate.getTime();
var withoutOffset = withOffset - offset;
console.log(withOffset);
console.log(withoutOffset);

動作しているようです。ISO文字列をDateオブジェクトに変換する際の問題については、提供されているリンクを参照してください。

編集

Prasad19saraのコメントによると、ミリ秒への誤った変換に関するバグを修正しました。


はい、Dateはすべてのブラウザで解析されるわけではありません。関連する質問についての私の答えを参照してください。
Vik David

そして、あなたの下の答えについての私のコメントを見てください;)
mplungjan 2012

これはFirefoxでは機能しませんvar myDate = new Date("2012-02-10T13:19:11+0000");
mplungjan 2012

1
@mplungjanなぜこのアプローチを使用しないのですか?私はこれが面倒であることを知っていますが、とにかく))
Oybek 2012

ええと...それはそこでやっているその資本「T」ですか?そのため、@ mplungjanは機能しません。
wle8300 2013年

28

以前のソリューションの省略形は

var myDate = +new Date("2012-02-10T13:19:11+0000");

オンザフライ型変換を行い、日付をミリ秒形式で直接出力します。

もう1つの方法は、EPOCH時間をミリ秒単位でのみ出力するDateutilの解析メソッドを使用することです。

var myDate = Date.parse("2012-02-10T13:19:11+0000");

そこに少しタイプミスがあります、「+」
Stuart Siegler 2015

@ stuart-sieglerこれは実際にはタイプミスではありません。「+」は日付をミリ秒単位で返します。
LordTribual 2015年

@LordTribual "+ new"は、日付をミリ秒単位で返しますか?
スチュアートジーグラー2015年

1
@ stuart-siegler特に「+ new」ではありませんが、「+」はトリックを実行し、いわゆる速記です。たとえば、ミリ秒単位の時間を+new Date()返し1447857230137ます。
LordTribual 2015年

1
JavaScript Numberオブジェクトを明示的に作成する方がはるかに明確です:const dateMillis = Number(new Date('2017-09-26T20:24:18.801Z'))new Date('2017-09-26T20:24:18.801Z').getTime()またはnew Date('2017-09-26T20:24:18.801Z').valueOf()さらに読みやすくなります。
David G

5

2017年現在の別のオプションは、を使用することDate.parse()です。ただし、MDNのドキュメントでは、ES5より前は信頼性が低いと指摘されています。

var date = new Date(); // today's date and time in ISO format
var myDate = Date.parse(date);

詳細については、フィドルを参照してください。


組み込みのパーサーは ECMAScript2011以降も信頼性がありません。:-)
RobG

2

別の可能な解決策は、現在の日付とを比較することでJanuary 1, 1970、あなたが得ることができるJanuary 1, 1970ことでnew Date(0)

var date = new Date(); 
var myDate= date - new Date(0);

2

はい、これは1行で実行できます

let ms = Date.parse('2019-05-15 07:11:10.673Z');
console.log(ms);//1557904270673

この機能の反対は何ですか!?
AG1

1

別の解決策は、次のようなNumberオブジェクトパーサーを使用することです。

let result = Number(new Date("2012-02-10T13:19:11+0000"));
let resultWithGetTime = (new Date("2012-02-10T13:19:11+0000")).getTime();
console.log(result);
console.log(resultWithGetTime);

これはgetTime()Dateオブジェクトと同じようにミリ秒に変換されます


0
var date = new Date()
console.log(" Date in MS last three digit = "+  date.getMilliseconds())
console.log(" MS = "+ Date.now())

これを使用して、ミリ秒単位で日付を取得できます


0

var date = new Date(date_string); varミリ秒= date.getTime();

これは私のために働いた!


0

UTC日付をミリ秒
構文に変換する場合:Date.UTC(year、month、?day、?hours、?min、?sec、?milisec);
例:
date_in_mili = Date.UTC(2020, 07, 03, 03, 40, 40, 40);
console.log('miliseconds', date_in_mili);


0

ISO日付から時刻のみ取得したい場合は、以下が役立ちます。それを探していたのですが、質問が見つかりませんでした。したがって、誰かが見た場合に役立ちます。

let isoDate = '2020-09-28T15:27:15+05:30';
let result = isoDate.match(/\d\d:\d\d/);
console.log(result[0]);

出力は、isoDateからの唯一の時間になります。

15:27
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.