JavaScriptで日付時刻を取得し文字列として表示する方法
本記事ではJavaScript上で日付時刻を取得し、文字列に変換する方法について記載します。
方法#
日付時刻の取得#
const now = new Date();
日付時刻の文字列化#
幾つか関数がありますが、よく使うのは以下だと思います。
const now = new Date();
console.log(now.toLocaleString());
// => 2022/9/17 21:02:23
console.log(now.toLocaleDateString());
// => 2022/9/17
説明#
Date#
Date は日付と時刻を取り扱うためのオブジェクトです。引数を与えずに動作させると現在時刻を利用してオブジェクトが生成され、上述の toLocaleString() の出力結果のようなフォーマット (例えば 2022/1/1 ) の文字列を与えるとその日付時刻のデータが生成されます。
new を付けた場合とつけない場合で動作が異なる点にご注意ください。
あり/なし | 動作 |
---|---|
あり | Date オブジェクトを生成する |
なし | 日付時刻を示す文字列を生成する |
ちなみに、 Date オブジェクト同士で計算を行うとミリ秒が返却されます。計算後に変換をしてあげる必要があります。
a = new Date('2022/1/1')
b = new Date('2022/1/2')
console.log(b - a)
// => 86400000
console.log(`days: ${(b - a) / 1000 / 60 / 60 / 24}`)
// => days: 1
文字列化の関数について#
幾つか文字列変換の関数があります。以下が一覧です。
関数名 | 説明 | Chromeで確認した出力 |
---|---|---|
toDateString() | 所謂英語圏でよく利用される形式に変換する | Sat Sep 17 2022 |
toISOString() | ISO 8601 Extended Formatで規定されている形式に変換する | 2022-09-17T12:08:44.643Z |
toJSON() | JSONでのシリアライズ向けに利用。内容は toISOString() と同じ | 2022-09-17T12:08:44.643Z |
toLocaleString() | 利用者のロケール(地域と言語)に合わせた内容で文字列にします。 | 2022/9/17 21:08:44 |
toLocaleDateString() | toLocaleString() の日付部分だけを返します。 | 2022/9/17 |
toLocaleTimeString() | toLocaleString() の時刻部分だけを返します。 | 21:08:44 |
toString() | 人間が読むことのできる形式に変換します。情報が細かいのでデバッグ向き? | Sat Sep 17 2022 21:08:44 GMT+0900 (日本標準時) |
toTimeString() | toString() の時刻部分だけを返します。 | 21:08:44 GMT+0900 (日本標準時) |
toUTCString() | 世界標準時(UTC)にタイムゾーン変換したものを返します。 | Sat, 17 Sep 2022 12:08:44 GMT |
自由な文字列に変換することはできないのか?#
例えば Python などでは strftime という関数が存在し、こちらが指定した形式の文字列に変換してくれます。例えば以下のように使えます。
from datetime import datetime
now = datetime.now()
print(now.strftime('%Y-%m-%d'))
# => '2022-09-17'
結論から言うと、 そういった機能はデフォルトのJavaScriptには存在していないため、自前で変換を行うか専用のライブラリを利用する必要があります 。
多種多様なフォーマットに対応する場合はライブラリを利用した方がよいかもしれませんが、特定の形式に変換するだけであれば自前で作成した方が早いかもしれません。
Date オブジェクトからは以下の関数を利用して年、日付などを取得できるのでこれらを使って独自のフォーマットを生成するイメージです。 一部 0 始まりのデータが混じっているため、取り扱いにご注意ください 。
関数 | 説明 |
---|---|
getFullYear()[1] | 「年」を 西暦として取得する |
getMonth() | 「月」を 数値として取得する (ただし 0 始まりなので 1月 = 0 なことに注意) |
getDate() | 「日」を取得する |
getDay() | 「曜日」を 0 始まりの数値として取得する (0が日曜日で6が土曜日) |
getHours() | 「時」を取得する |
getMinutes() | 「分」を取得する |
getSeconds() | 「秒」を取得する |
getMilliseconds() | 「ミリ秒」を取得する |