web-dev-qa-db-ja.com

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

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

フィドル: http://jsfiddle.net/J2pWj/




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

70
sed
new Date('2012.08.10').getTime() / 1000

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

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

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

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

40
theVinchi

Moment.js APIを確認してください。これは非常に使いやすく、多くの機能が組み込まれています。

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

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

単項+演算子を使用できます

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

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

6
hybrid9
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the Epoch
5
KARTHIKEYAN.A

Date.parse()を使用できますが、受け入れる入力形式は実装依存です。ただし、日付をISO形式(YYYY-MM-DD)に変換できる場合、ほとんどの実装はそれを理解する必要があります。

Date.parseが間違った結果を与えるのはなぜですか? を参照してください。

2
Barmar

Date.parse()メソッドを使用して実行できます。

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

Date.parse( "03.03.2016")output-> 1456959600000

Date.parse( "2015-12-12")output-> 1449878400000

1
Nazar

タイムスタンプを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'
1
Damodar Bashyal
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);

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

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