web-dev-qa-db-ja.com

javascript日付から文字列

ここに私がする必要があるものがあります。

日付を取得し、文字列に変換して、サードパーティのユーティリティに渡します。ライブラリからの応答には、渡された文字列形式の日付が含まれます。したがって、日付を20110506105524(YYYYMMDDHHMMSS)のような文字列に変換する必要があります

function printDate() {
    var temp = new Date();
    var dateStr = temp.getFullYear().toString() + 
                  temp.getMonth().toString() + 
                  temp.getDate().toString() +
                  temp.getHours().toString() + 
                  temp.getMinutes().toString() + 
                  temp.getSeconds().toString();

    debug (dateStr );
}

上記の問題は、1〜9か月間、1桁を出力することです。月、日付を正確に2桁で表示するように変更するにはどうすればよいですか...

51
Kiran

1桁の数字とノートgetMonthが1..12ではなく0..11を返す場合、「0」でパディングする必要があります。

function printDate() {
    var temp = new Date();
    var dateStr = padStr(temp.getFullYear()) +
                  padStr(1 + temp.getMonth()) +
                  padStr(temp.getDate()) +
                  padStr(temp.getHours()) +
                  padStr(temp.getMinutes()) +
                  padStr(temp.getSeconds());
    debug (dateStr );
}

function padStr(i) {
    return (i < 10) ? "0" + i : "" + i;
}
58
Alex K.

JQuery Datepicker に依存していますが、簡単に実行できます。

var mydate = new Date();
$.datepicker.formatDate('yy-mm-dd', mydate);
38
Stéphane

このポリフィルを使用 https://github.com/UziTech/js-date-format

var d = new Date("1/1/2014 10:00 am");
d.format("DDDD 'the' DS 'of' MMMM YYYY h:mm TT");
//output: Wednesday the 1st of January 2014 10:00 AM
4
Tony Brix

正規表現とtoJSON()を使用すると、少し簡単になります。

_var now = new Date();
var timeRegex = /^.*T(\d{2}):(\d{2}):(\d{2}).*$/
var dateRegex = /^(\d{4})-(\d{2})-(\d{2})T.*$/
var dateData = dateRegex.exec(now.toJSON());
var timeData = timeRegex.exec(now.toJSON());
var myFormat = dateData[1]+dateData[2]+dateData[3]+timeData[1]+timeData[2]+timeData[3]
_

これを書いている時点で_"20151111180924"_が得られます。

toJSON()を使用する良い点は、すべてがすでに埋め込まれていることです。

1
Daniel Cerecedo

日付を実際の整数_20110506105524_に変換してから、これを文字列に変換する方が簡単な場合があります。

_function printDate() {
    var temp = new Date();
    var dateInt =
        ((((temp.getFullYear() * 100 + 
            temp.getMonth() + 1) * 100 + 
           temp.getDate()) * 100 +
          temp.getHours()) * 100 + 
         temp.getMinutes()) * 100 + 
        temp.getSeconds();

    debug ( '' + dateInt );  // convert to String
}
_

temp.getFullYear() < 1000の場合、結果は1桁(またはそれ以上)短くなります。

注意:Number.MAX_SAFE_INTEGERは_9007199254740991_(16桁のみ)であるため、これはミリ秒の精度(つまり17桁)では機能しません。

1
jammon

toJSON()と正規表現を使用したDaniel Cerecedoの回答が気に入っています。さらに簡単なフォームは次のとおりです。

var now = new Date();
var regex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).*$/;
var token_array = regex.exec(now.toJSON());
// [ "2017-10-31T02:24:45.868Z", "2017", "10", "31", "02", "24", "45" ]
var myFormat = token_array.slice(1).join('');
// "20171031022445"
0
jammon