日付をフォーマットする
カスタム形式と標準形式を学びます。
「日付をフォーマットする」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
日付をフォーマットする理由
生の DateTime は、コンピューターの既定のカルチャを使って出力されますが、それが望ましい形式とは限りません。
フォーマットを使うと、日付を 2024-03-05、05/03/2024、Tuesday, March 5 のように、表示形式を正確に制御できます。C# には標準書式文字列とカスタム書式文字列の両方があります。
パターンを指定した ToString
最も柔軟な方法は、カスタム書式文字列を指定して ToString を使うことです。各文字が日付の一部を表します。
たとえば、"yyyy-MM-dd" を指定すると、年・月・日の順になり、並べ替えやすく読みやすい形式になります。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("yyyy-MM-dd"));
}
}年・月・日の書式指定子
書式指定子では大文字と小文字が区別されます。yyyy は 4 桁の年、MM は 2 桁の月、dd は 2 桁の日を表します。
月には大文字の M を使います。小文字の m は分を意味します。これらを取り違えるのは、初心者によくあるバグです。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("dd/MM/yyyy"));
}
}時・分・秒
時刻部分では、HH が 24 時間制の時、mm が分、ss が秒を表します。
小文字の hh は 12 時間制の時を表し、AM または PM を示す tt と組み合わせて使います。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("HH:mm:ss"));
}
}AM/PM 付きの 12 時間制
読みやすい 12 時間制の時刻を表示するには、hh:mm と tt を組み合わせます。tt 指定子は AM または PM を出力します。
そのため、14:30 は 02:30 PM になります。24 時間制の値よりもこちらの方が読みやすいと感じる人も多くいます。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("hh:mm tt"));
}
}月名と曜日名
数字の代わりに、名前を文字で表示することもできます。MMMM は月の完全な名前を、MMM は短縮名を表示します。
曜日では、dddd が完全な曜日名、ddd が略称を表します。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("dddd, MMMM dd"));
}
}標準書式指定子
カスタムパターンに加えて、C# には短い標準コードも用意されています。"d" は短い日付、"D" は長い日付、"t" は短い時刻、"T" は長い時刻を表します。
これらは現在のカルチャに従うため、具体的な表示形式は地域によって異なる場合があります。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("D"));
}
}短縮形式と完全形式のヘルパー
便利なメソッドもあります。ToShortDateString と ToShortTimeString は簡潔な出力を返し、ToLongDateString は日付を完全な形式で表示します。
これらは手軽ですが、細かく制御したい場合は明示的な書式文字列を使用してください。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToShortDateString());
}
}補間での書式設定
補間文字列内では、コロンの後に書式を指定できます。{d:yyyy-MM-dd} と記述すると、値が表示される場所で書式設定されます。
これにより、メッセージを組み立てるコードを短く読みやすくできます。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine($"Date: {d:yyyy-MM-dd}");
}
}カルチャに依存しない出力
保存したりシステム間で送信したりするデータには、CultureInfo.InvariantCulture を使って書式設定してください。これにより、結果がユーザーの地域設定に左右されなくなります。
同じコードでも別のマシンでは異なる表示になる、といった予期しない問題を防げます。
using System;
using System.Globalization;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
}
}ラウンドトリップ形式
標準の "o"(ラウンドトリップ)形式は、秒の小数部分を含むすべての詳細を保持した ISO 8601 文字列を出力します。
後で日付を解析し直す際に精度を失いたくない場合に、最も安全な選択肢です。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.ToString("o"));
}
}確認問題
カスタム書式文字列内で月を2桁で表示したいとします。正しい指定子はどれでしょうか。
まとめ
ToString と yyyy、MM、dd、HH、mm などのカスタムパターンを使って、日付を書式設定できます。
"d" や "D" などの標準コードはカルチャに従います。一方、InvariantCulture と "o" のラウンドトリップ形式を使うと、システム間で出力を安定させられます。
よくある質問
「日付をフォーマットする」レッスンは無料ですか?
はい。「日付をフォーマットする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「日付をフォーマットする」で何を学びますか?
カスタム形式と標準形式を学びます。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「日付をフォーマットする」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- DateTimeを作成する
- 日付をフォーマットする
- TimeSpanと期間
- 日付の計算