通常の日付をUNIXタイムスタンプに変換する


104

2012.08.10JavaScriptで通常の日付をUNIXタイムスタンプに変換するにはどうすればよいですか?

Fiddle:http : //jsfiddle.net/J2pWj/




PHP、Rubyなどで変換する多くの投稿をここで見ましたが、JS内でこれを行う必要があります。



1
newDate.getTime()/ 1000を試しましたか?
Gareth Parker

@LokiAstariはい、ごめんなさい。検索はしましたが見つかりませんでした。
スタン

1
たぶん私は何かが足りないかもしれませんがunix timestamp、すべてのエンジニアリングとコンピュータサイエンスにとってとても基本的です。便利なメソッドが組み込まれているといいのですが。現在、私は使用していますMath.floor((+new Date()) / 1000);
火星ロバートソン

回答:


209
new Date('2012.08.10').getTime() / 1000

JavaScriptの日付のドキュメントを確認してください。


1
ドキュメンテーションページをありがとうございます。
スタン

32
Math.floor itまたはunix UNIXタイムスタンプ(10進数になります)
BT

@ fguillen、Mooseman、私はこのコードを実行して確認します。UNIXタイムスタンプを日付に変換すると、2012.08.10ではなく2012.08.09が表示されます。何故ですか..?
WPラーナー、2015

@ user2584538、以下の私の答えを参照してください。小数を削除する必要があります。
theVinchi 2016

1
@メンターUNIX時間はミリ秒ではなく秒で測定されます
Nicu Surdu

59
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))

toFixed(0)1000で割ってミリ秒から秒に変換するときに、小数点を削除するためにを追加することが重要です。

.getTime()この関数はミリ秒単位のタイムスタンプを返しますが、真のUNIXタイムスタンプは秒に常にあります。


5
これは数値ではなく文字列を返すことに注意してください。
Capaj

3
良い点、答えをparseInt()でラップして整数に戻すように変更しました。
theVinchi 2016年

11

あなたはmoment.js apiをチェックアウトする必要があります。それは非常に使いやすく、多くの組み込み機能があります。

私はあなたの問題について、次のようなものを使うことができると思います:

var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();


5

あなたは単に単項+演算子を使うことができます

(+new Date('2012.08.10')/1000).toFixed(0);

http://xkr.us/articles/javascript/unary-add/-日付の下を確認します。


2
ここに2つのコメントを追加したいだけです。単項加算演算子+ /は、すでに数学演算子のように必要ありません。また、toFixedタイプが重要である場合には..なく文字列の数を返します
ローレンス


3
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);

この場合、整数のみを返す(したがって、単純な除算は行わない)だけでなく、実際に経過した秒数だけを返すことも重要です(そのため、このコードではを使用Math.floor()しますが、使用しませんMath.round())。


2

これは、Date.parse()メソッドを使用して行うことができます。

Date.parse($("#yourCustomDate).val())

Date.parse( "03.03.2016")出力-> 1456959600000

Date.parse( "2015-12-12")出力-> 1449878400000


1
この回答は、6年前のBarmarの回答とどう違いますか?
カプリコーン

1
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;

1

タイムスタンプをPHPのタイムスタンプと比較した後、上記のどれも私のタイムゾーンに対して正しくないようです。以下のコードはPHPと同じ結果を私に与えました。これは私がしているプロジェクトにとって最も重要です。

function getTimeStamp(input) {
    var parts = input.trim().split(' ');
    var date = parts[0].split('-');
	var time = (parts[1] ? parts[1] : '00:00:00').split(':');

	// NOTE:: Month: 0 = January - 11 = December.
	var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
	return d.getTime() / 1000;
}

// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');

console.log(start + ' - ' + end);

私はこれをNodeJSで使用しており、タイムゾーン「オーストラリア/シドニー」があります。だから、私はこれを.envファイルに追加する必要がありました:

TZ = 'Australia/Sydney'

上記は以下と同等です。

process.env.TZ = 'Australia/Sydney'

0

タイムスタンプをUNIXタイムスタンプに変換します。

const date = 1513787412; const unixDate = new Date(date * 1000);// Dec 20 2020 (object)

変換後にタイムスタンプを取得する const TimeStamp = new Date(date*1000).getTime(); //1513787412000

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