回答:
私がよく使用する変更されたコード:
Date.prototype.yyyymmdd = function() {
var mm = this.getMonth() + 1; // getMonth() is zero-based
var dd = this.getDate();
return [this.getFullYear(),
(mm>9 ? '' : '0') + mm,
(dd>9 ? '' : '0') + dd
].join('');
};
var date = new Date();
date.yyyymmdd();
[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
プロトタイプに追加したくありませんでした。別の方法は次のとおりです。
var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"");
<!-- Next line is for code snippet output only -->
document.body.innerHTML += res;
rightNow
、変数の周りを、あなたがラップすることができnew Date
、その一行中のすべて取り戻す:(new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
ので、これを行いました: var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
。かなり単純ですが、カプセル化する必要があります。
rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
次のtoISOString
関数を使用できます。
var today = new Date();
today.toISOString().substring(0, 10);
「yyyy-mm-dd」形式になります。
var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
var formattedDate = moment().format('YYYYMMDD');
純粋なJSソリューションが必要ない場合は、jQuery UIを使用して次のような作業を行うことができます。
$.datepicker.formatDate('yymmdd', new Date());
通常、あまり多くのライブラリーをインポートしたくありません。しかし、jQuery UIは非常に便利なので、おそらくプロジェクトの他の場所で使用します。
その他の例については、http://api.jqueryui.com/datepicker/にアクセスしてください
これは、YYYY-MM-DD
今日の日付の文字列を作成するために使用できる1行のコードです。
var d = new Date().toISOString().slice(0,10);
toISOString()
(2時間前)GMT +0 00:00:2015-12-31T22を与えるだろう。
new Date('Jun 5 2016').
toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
// => '2016-06-05'
new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
ooの答えに加えて、論理演算を戻りから分離し、代わりに3項として変数に入れることをお勧めします。
また、concat()
変数を安全に連結するために使用します
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear();
var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
var dd = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
return "".concat(yyyy).concat(mm).concat(dd);
};
Date.prototype.yyyymmddhhmm = function() {
var yyyymmdd = this.yyyymmdd();
var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
return "".concat(yyyymmdd).concat(hh).concat(min);
};
Date.prototype.yyyymmddhhmmss = function() {
var yyyymmddhhmm = this.yyyymmddhhmm();
var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
return "".concat(yyyymmddhhmm).concat(ss);
};
var d = new Date();
document.getElementById("a").innerHTML = d.yyyymmdd();
document.getElementById("b").innerHTML = d.yyyymmddhhmm();
document.getElementById("c").innerHTML = d.yyyymmddhhmmss();
<div>
yyyymmdd: <span id="a"></span>
</div>
<div>
yyyymmddhhmm: <span id="b"></span>
</div>
<div>
yyyymmddhhmmss: <span id="c"></span>
</div>
("00" + (this.getDate())).slice(-2)
2桁ベースの数値を取得するために使用します。「if」または「?:」ステートメントはなく、.getX()関数の呼び出しは少なくなります。少し速くない場合でも、少なくとも読みやすくなります。
ネイティブオブジェクトを変更するのは好きではありません。乗算は、受け入れられたソリューションの文字列パディングよりも明確だと思います。
function yyyymmdd(dateIn) {
var yyyy = dateIn.getFullYear();
var mm = dateIn.getMonth() + 1; // getMonth() is zero-based
var dd = dateIn.getDate();
return String(10000 * yyyy + 100 * mm + dd); // Leading zeros for mm and dd
}
var today = new Date();
console.log(yyyymmdd(today));
.replace('-', '')
OPの質問に答えるためにオンにする必要がある)を使用しているので機能しますが、OPの元の質問に忠実であり、追加の手順は必要ありません。優秀な!
UTCでのDate.toISOString()印刷によって引き起こされる可能性のある日付ジャンプの問題のないプレーンなJS(ES5)ソリューション:
var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');
これは、@ Pierre Guilbertの回答に対する@webersteのコメントへの応答です。
toISOString
複数の連続したハイフンを返すことができますか?
// UTC/GMT 0
document.write('UTC/GMT 0: ' + (new Date()).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812013509
// Client local time
document.write('<br/>Local time: ' + (new Date(Date.now()-(new Date()).getTimezoneOffset() * 60000)).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812113509
var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);
new Date()
nrのラッパーである新しい日付オブジェクトを作成します。1970年1月1日00:00:00.000 UTC以降のミリ秒 次にtoISOString
、ローカルタイムゾーンで出力します。
もう1つの方法は、スウェーデン、リトアニア、ハンガリー、韓国などのビッグエンディアン日付形式標準toLocaleDateString
を持つロケールで使用することです...
date.toLocaleDateString('se')
区切り文字(-
)を削除するには、非数字を置き換えるだけです。
console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );
これには、UTC日付形式で発生する可能性のある潜在的なエラーはありません。UTC日付は、ローカルタイムゾーンの日付と比較して1日ずれている場合があります。
このスレッドで最も人気のある回答の少し簡略化されたバージョンhttps://stackoverflow.com/a/3067896/5437379:
function toYYYYMMDD(d) {
var yyyy = d.getFullYear().toString();
var mm = (d.getMonth() + 101).toString().slice(-2);
var dd = (d.getDate() + 100).toString().slice(-2);
return yyyy + mm + dd;
}
dateformatは非常によく使われるパッケージです。
使い方:
dateformat
NPMからダウンロードしてインストールします。モジュールで必須:
const dateFormat = require('dateformat');
そして、あなただけのものをフォーマットします:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
この人はここに=> http://blog.stevenlevithan.com/archives/date-time-formatはformat()
JavascriptのDate
オブジェクトの関数を書いたので、おなじみのリテラル形式で使用できます。
アプリのJavaScriptでフル機能の日付フォーマットが必要な場合は、それを使用してください。そうでなければ、あなたがやりたいことが1つしかない場合は、getYear()、getMonth()、getDay()を連結するのがおそらく最も簡単です。
@ooの答えから作業すると、フォーマット文字列に従って日付の文字列が返されます。必要に応じて、年とミリ秒などの2桁の年の正規表現を簡単に追加できます。
Date.prototype.getFromFormat = function(format) {
var yyyy = this.getFullYear().toString();
format = format.replace(/yyyy/g, yyyy)
var mm = (this.getMonth()+1).toString();
format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
var dd = this.getDate().toString();
format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
var hh = this.getHours().toString();
format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
var ii = this.getMinutes().toString();
format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
var ss = this.getSeconds().toString();
format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
return format;
};
d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);
しかし、それがどれほど効率的であるかはわかりません。特に、正規表現を多く使用しているため、パフォーマンスに関しては賢明です。それはおそらく私が純粋なjsをマスターしていないいくつかの作業を使用する可能性があります。
これを行う必要がある場合は、通常、以下のコードを使用します。
var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
+ ('0' + (date.getMonth() + 1)).slice(-2)
+ '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written
説明すると、.slice(-2)は文字列の最後の2文字を示します。
したがって、何があっても、日または月に「0」を追加し、最後の2つだけを要求できます。これらは常に必要な2つだからです。
したがって、MyDate.getMonth()が9を返す場合、次のようになります。
("0" + "9") // Giving us "09"
したがって、それに.slice(-2)を追加すると、最後の2文字が得られます。
("0" + "9").slice(-2)
"09"
しかし、date.getMonth()が10を返す場合、次のようになります。
("0" + "10") // Giving us "010"
したがって、.slice(-2)を追加すると、最後の2文字が得られます。
("0" + "10").slice(-2)
"10"
シンプルさと読みやすさのために別の答え。
また、既存の定義済みクラスメンバーを新しいメソッドで編集することはお勧めしません。
function getDateInYYYYMMDD() {
let currentDate = new Date();
// year
let yyyy = '' + currentDate.getFullYear();
// month
let mm = ('0' + (currentDate.getMonth() + 1)); // prepend 0 // +1 is because Jan is 0
mm = mm.substr(mm.length - 2); // take last 2 chars
// day
let dd = ('0' + currentDate.getDate()); // prepend 0
dd = dd.substr(dd.length - 2); // take last 2 chars
return yyyy + "" + mm + "" + dd;
}
var currentDateYYYYMMDD = getDateInYYYYMMDD();
console.log('currentDateYYYYMMDD: ' + currentDateYYYYMMDD);
yyyymmdd=x=>(f=x=>(x<10&&'0')+x,x.getFullYear()+f(x.getMonth()+1)+f(x.getDate()));
alert(yyyymmdd(new Date));
これは、日付と時刻の両方のコンポーネントを許可し、数値または文字列としてまったく同じように並べ替えることができる、より一般的なアプローチです。
日付ISO形式の番号順に基づいて、ローカルタイムゾーンに変換し、数字以外を削除します。つまり:
// monkey patch version
Date.prototype.IsoNum = function (n) {
var tzoffset = this.getTimezoneOffset() * 60000; //offset in milliseconds
var localISOTime = (new Date(this - tzoffset)).toISOString().slice(0,-1);
return localISOTime.replace(/[-T:\.Z]/g, '').substring(0,n || 20); // YYYYMMDD
}
使用法
var d = new Date();
// Tue Jul 28 2015 15:02:53 GMT+0200 (W. Europe Daylight Time)
console.log(d.IsoNum(8)); // "20150728"
console.log(d.IsoNum(12)); // "201507281502"
console.log(d.IsoNum()); // "20150728150253272"
ネイティブJavaScript:
new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');