web-dev-qa-db-ja.com

JavaScriptで日付をタイムスタンプに変換しますか?

私は日付をタイムスタンプに変換したい、私の入力は26-02-2012です。私が使った

new Date(myDate).getTime();

それはNaNを言います..誰かがこれを変換する方法を言うことができますか?

127
selladurai
var myDate="26-02-2012";
myDate=myDate.split("-");
var newDate=myDate[1]+","+myDate[0]+","+myDate[2];
alert(new Date(newDate).getTime());​ //will alert 1330192800000

更新:

var myDate="26-02-2012";
myDate=myDate.split("-");
var newDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2];
alert(new Date(newDate).getTime()); //will alert 1330210800000

DEMO (Chrome、FF、Opera、IEおよびSafariでテスト済み)。

157
The Alpha

この関数を試してみてください、それは Date.parse() メソッドを使い、カスタムロジックを必要としません:

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));
41
Ketan Savaliya
var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();
22
Diode

このリファクタリングされたコードはそれをするでしょう

let toTimestamp = strDate => Date.parse(strDate)

これはie8-を除くすべての最近のブラウザで動作します

15
Jalasem
function getTimeStamp() {
       var now = new Date();
       return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
                     + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
                     .getSeconds()) : (now.getSeconds())));
}
5
deepakssn

あなたはあなたの日付の数字を逆にして-,に変更するだけでいいです。

 new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)

あなたの場合:

 var myDate="26-02-2012";
 myDate=myDate.split("-");
 new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();

P.Sイギリスのロケールはここでは関係ありません。

5
antonjs

ここに2つの問題があります。まず、日付のインスタンスに対してのみgetTimeを呼び出すことができます。新しい日付を角かっこで囲むか、それを変数に割り当てる必要があります。

次に、適切な形式で文字列を渡す必要があります。

作業例:

(new Date("2012-02-26")).getTime();
3
Alan Bogu

あなたの文字列はDateオブジェクトが handleに指定されている というフォーマットではありません。あなたはそれを自分でパースしなければならないでしょう、 MomentJS あるいはそれより古い(そして今のところ維持されていません) DateJS のような日付解析ライブラリを使うか、あるいはmassage Dateに解析を依頼する前に、正しいフォーマット(例えば、2012-02-29)に変換してください。

NaNが返される理由:new Date(...)に無効な文字列の処理を依頼すると、無効な日付に設定されたDateオブジェクトが返されます(new Date("29-02-2012").toString()"Invalid date"を返します)。この状態の日付オブジェクトに対してgetTime()を呼び出すと、NaNが返されます。

2
T.J. Crowder
/**
 * Date to timestamp
 * @param  string template
 * @param  string date
 * @return string
 * @example         datetotime("d-m-Y", "26-02-2012") return 1330207200000
 */
function datetotime(template, date){
    date = date.split( template[1] );
    template = template.split( template[1] );
    date = date[ template.indexOf('m') ]
        + "/" + date[ template.indexOf('d') ]
        + "/" + date[ template.indexOf('Y') ];

    return (new Date(date).getTime());
}
2
Evgeniy

(ISO)日付をnixタイムスタンプに変換するために、必要な長さより3文字長いタイムスタンプになったので、私の年はおよそ50kになりました...

私はそれを1000で割る必要がありました:new Date('2012-02-26').getTime() / 1000

0
orszaczky

yyyymmddHHMMSSの形式で読み取り可能なタイムスタンプを取得したい場合

> (new Date()).toISOString().replace(/[^\d]/g,'')              // "20190220044724404"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -3) // "20190220044724"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -9) // "20190220"

使用例:バックアップファイルの拡張子。 /my/path/my.file.js.20190220

0
allenhwkim

回答は他の開発者から提供されていますが、私自身の方法では、次のようにユーザー定義関数を作成することなくその場で行うことができます。

var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000
0
Frederick Eze