システムを構築する時にデータを格納する時などにおいて、必ず使用するのが「日付処理」です。
データ保存する時に、保存した日時や、処理対象の日時の予定や期間など、色々な場面でdate値は必要になります。
javascriptもで、グローバル関数のDateに、parseという処理があり、非常に便利だったので、覚えておいてこれを利用しないてはありません。
これまで自作の関数で行なっていた処理がいとも簡単にサクッとできてしまって、拍子抜けするかもしれませんが、効率ってこういう事を言うんですね・・・orz
どんな事ができるの?
年月日の文字列を、unix-timeの値に変換
年月日時分秒を文字列(またはそれぞれの値)として保有している時に、そこからunix-timeを取得してdate値として扱う事ができます。
どうやって書くの?
// Date.parse("ここに色々な日付フォーマットが書ける");
// # sample-1
Date.parse("2018/1/1");
// > 1514732400000
// # sample-2
Date.parse("2018.1.1");
// > 1514732400000
// # sample-3
Date.parse("2018-1-1");
// > 1514732400000
// # sample-4
Date.parse("2018 1 1");
// > 1514732400000
// # sample-5
Date.parse("2018 Jan 1")
// > 1514732400000
// # sample-7
Date.parse("Jan 1, 2018")
// >1514732400000
時分秒を含めた書き方
Date.parse("2018/1/1 00:00:01")
> 1514732401000
NGなやつ
Date.parse("20180101");
> 1514732400000
日付だけを指定すると、その日の0:0:0が返ってきます。
また時間フォーマットは"00:00:00"とコロンsplitで各以外はNGなようです。
日付フォーマットについては、文字列で色々なsplitで書けるので、非常に便利に使えますね。
Date関数の基本
ちなみに、取得したunix-timeは、Date関数を使ってそれぞれの値を取得する事が可能になります。
年月日の取得
var date_string = Date.parse("2018/1/1");
var dt = new Date(date_string);
var year = dt.getFullYear();
var month = dt.getMonth()+1;
var date = dt.getDate();
console.log(year+"/"+month+"/"+date);
// > 2018/1/1
月日を2桁の合わせる
var month2 = (Array(2).join("0")+(dt.getMonth()+1)).slice(-2);
var date2 = (Array(2).join("0")+dt.getDate()).slice(-2);
console.log(year+"/"+month2+"/"+date2);
> 2018/01/01
月の値は0スタートの為、"+1"をする事を忘れないように。
時分秒の取得
var date_string = Date.parse("2018/1/1 11:22:33");
// > 1514773353000
var dt = new Date(sate_string);
var hour = dt.getHours();
var min = dt.getMinutes();
var sec = dt.getSeconds();
console.log(hour+":"+min+":"+sec);
// > 11:22:33
参考
こまかなリファレンスなどを知りたい方は下記を参照ください。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
0 件のコメント:
コメントを投稿