日付を文字列にするときのオススメ

日付を文字列にしたいと思うことはよくあると思うので、オススメを書いておこうと思います。

はじめに

日付を文字列にする場合は2種類の変換の仕方があります。それは、

  • 日付型に戻せる文字列
  • 日付型に戻せない文字列

です。この二つを混ぜて扱うとすぐに死に目を見ることになるので、くれぐれもきをつけましょう。

日付型に戻せる文字列

日付型に戻せる文字列は、主にファイルに書き出すときやAPIで通信するときに用います。どのプログラミング言語でも戻せる文字列で扱うのが良いです。具体的には、ISO8601 (例: 2004-04-01T12:00:00Z) や Unix time(例: 1713225605) です。これらは大抵のプログラミング言語で日付型に戻す機能が用意されているいます。 理由がなければISO8601、特にタイムゾーン付きのISO8601 (例: 2004-04-01T12:00:00Z) をオススメします。

日付型に戻せない文字列

日付型に戻せない文字列は、主に人間に見せるために用います。例えば、「今」「10分前」「2024年4月19日」「April 19, 2024.」「19th April 2024.」です。この記事を書き始めた時刻を表していますが、タイムゾーン付きのISO8601 に戻すことはできません。特に、日本語とアメリカ英語とイギリス英語の表記の差を正しくパースして戻すことは至難の業です。

使い分けをする

基本的には日付型か日付型に戻せる文字列で扱い、ユーザーに表示する直前にユーザーの設定に合わせて最適な文字列に変換してあげるのが好ましいです。少なくとのTimeZoneや言語は考慮して、できれば暦(グレゴリアンや和暦等)や文化を好著した表記に変換ましょう。