C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド
生徒
「プログラムで日付や時間を使いたいんですけど、C#ではどうやって扱うんですか?」
先生
「C#では、DateTimeという日付と時間を扱うための便利な型が用意されています。」
生徒
「日付型ってどんなことができるんですか?現在時刻を表示したりできますか?」
先生
「もちろんできますよ。では、DateTimeの基本的な使い方から見ていきましょう。」
1. C#の日付型(DateTime)とは?
C#のDateTime型は、日付や時刻の情報を専門に扱うためのデータ型です。カレンダーの「年月日」だけでなく、デジタル時計のような「時分秒」、さらには1秒よりも細かいミリ秒単位まで正確に記録・管理できるのが特徴です。プログラムを作成する際、日付や時刻は「文字列(string)」として扱うこともできますが、DateTime型を使うことで、後続の章で紹介するような「3日後を計算する」「土曜日かどうかを判定する」といった複雑な処理が圧倒的に簡単になります。
ITシステムにおいて、DateTime型は欠かせない存在です。例えば、ネットショップの注文日時、銀行の振込時間、スマートフォンのアラーム設定など、あらゆる場面でこの型が活躍しています。初心者のうちは「日付と時刻をセットで格納できる、特別な箱」というイメージを持つと理解しやすいでしょう。
まずは、DateTime型の変数に値を代入し、その中身を表示する最もシンプルなプログラムを見てみましょう。ここでは、2026年の元日(午前9時)を指す日付データを作成します。
// 2026年1月1日 9時00分00秒のデータを作成
DateTime newYear = new DateTime(2026, 1, 1, 9, 0, 0);
// コンソールに表示
Console.WriteLine("設定した日付:");
Console.WriteLine(newYear);
設定した日付:
2026/01/01 9:00:00
上記のコードでは、new DateTime(...)という記述を使って、特定のタイミングを指定しています。このようにDateTime型を使うことで、コンピュータは単なる文字の羅列ではなく「意味のある日付データ」として時間を認識できるようになります。人間がスケジュール帳に予定を書き込むように、C#ではDateTime型を使ってスマートに時間を管理しましょう。
2. 現在の日付と時刻を取得する方法
C#でプログラミングをしていると、「今この瞬間の日時」を取得して画面に表示したり、ログとして記録したりしたい場面が非常に多くあります。そのような時に最もよく使われるのが、DateTime.Nowプロパティです。これは、プログラムを実行しているコンピュータ(PCやサーバー)の内蔵時計から、現在の正確な日付と時刻を「DateTime型」として取り出す機能です。
例えば、アプリのログイン時刻を記録したり、現在時刻によって挨拶を変えたりする処理も、この一歩から始まります。初心者の方でも、時計の針を読み取るような直感的な操作で「今」のデータを扱うことができます。
// 今日の日付と現在の時刻をまるごと取得
DateTime now = DateTime.Now;
// 取得した「今」の情報を表示
Console.WriteLine("現在のシステム時刻:");
Console.WriteLine(now);
現在のシステム時刻:
2026/03/30 14:29:23
ここがポイント!
DateTime.Nowで取得できるデータには、「年・月・日」というカレンダーの情報と、「時・分・秒」という時計の情報がすべてセットで含まれています。取得した結果をそのまま表示すると、多くの環境では「yyyy/MM/dd HH:mm:ss」という形式で出力されますが、これはコンピュータが管理している生の状態に近い形です。まずはこの一文で、プログラムが現実世界の時間とつながる感覚を掴んでみましょう。
3. 特定の日付を作成する方法
プログラムを組んでいると、「過去のイベント日」や「将来のキャンペーン開始日」など、現在時刻ではない特定の日時を自由に作り出したい場面があります。C#では、new DateTime()という命令(コンストラクタ)を使うことで、自分の好きな日時を指定して新しい「日付の箱」を作成できます。
最も基本的な作り方は、カッコの中に「年、月、日」を数字で指定する方法です。たとえば、プログラミングの練習でよく使われる「2024年1月1日」というデータを作成して、コンソール画面に表示させてみましょう。
// 2024年1月1日(時刻はデフォルトの0時0分0秒)を作成
DateTime specificDay = new DateTime(2024, 1, 1);
// 作成した日付を表示
Console.WriteLine("指定した日付:");
Console.WriteLine(specificDay);
指定した日付:
2024/01/01 0:00:00
このように、引数(カッコ内の数字)に「年・月・日」を順番に渡すだけで、コンピュータはその日を正確に認識します。もし、お昼の12時や深夜の23時といった「時刻」まで細かく指定したい場合は、後ろに数字を付け加えることで対応可能です。
時刻まで指定する例
以下のサンプルコードは、2026年12月25日の午後3時30分ちょうどを指定してデータを作成する例です。24時間表記で指定するため、午後3時は「15」と記述します。
// 2026年12月25日 15時30分00秒 を作成
DateTime christmas = new DateTime(2026, 12, 25, 15, 30, 0);
Console.WriteLine("クリスマスイベント開始時刻:");
Console.WriteLine(christmas);
クリスマスイベント開始時刻:
2026/12/25 15:30:00
プログラミング未経験の方でも、「年、月、日、時、分、秒」の順番に数字を並べるだけなので、非常に直感的に扱えるはずです。ただし、存在しない日付(例:2月30日など)を指定すると、プログラムがエラー(例外)を起こして止まってしまうため、必ずカレンダーに存在する正しい日付を指定するようにしましょう。
4. 日付から年・月・日・時刻を取り出す方法
DateTimeから特定の情報だけを抜き出すこともよくあります。たとえば、誕生日から「年だけ取る」「月だけ取る」などの操作ができます。これは、Year・Month・Dayなどのプロパティを使うことで簡単に取得できます。
DateTime dt = new DateTime(2025, 11, 16, 15, 30, 0);
Console.WriteLine(dt.Year);
Console.WriteLine(dt.Month);
Console.WriteLine(dt.Day);
Console.WriteLine(dt.Hour);
Console.WriteLine(dt.Minute);
2025
11
16
15
30
このように、カレンダーの情報を細かく取り出して使えるため、画面表示に使ったり、条件分岐に利用したりすることができます。
5. 日付の計算をする方法(加算・減算)
日付に日数を足したり、時間を引いたりする操作もよく使われます。C#では、AddDays・AddHoursなどのメソッドを使うことで簡単に計算できます。締切日を計算したり、○日後・○日前を求める場合に便利です。
DateTime today = DateTime.Now;
DateTime threeDaysLater = today.AddDays(3);
DateTime twoHoursBefore = today.AddHours(-2);
Console.WriteLine(threeDaysLater);
Console.WriteLine(twoHoursBefore);
2025/11/19 ~
2025/11/16 ~(2時間前)
引き算をしたい場合は、マイナスの値を入れるだけなので、とても直感的に使えます。
6. 日付の書式を整えて表示する方法(フォーマット)
日付を表示するとき、「2025/11/16」ではなく「2025年11月16日」のように整えたいことがあります。このような場合は、ToString()に書式(フォーマット)を指定します。
DateTime now = DateTime.Now;
string formatted = now.ToString("yyyy年MM月dd日 HH時mm分ss秒");
Console.WriteLine(formatted);
2025年11月16日 23時12分45秒
フォーマットを変更することで、画面表示やログ出力をより読みやすくできます。プログラミングでは非常によく使うテクニックです。
7. 文字列の日付をDateTimeに変換する方法(Parse)
ユーザーが入力した文字列をそのまま使うのではなく、DateTimeに変換したい場面もあります。例えば、「2025/11/16」という文字列をDateTimeに変換するには、DateTime.Parseを使います。
string text = "2025/11/16";
DateTime dt = DateTime.Parse(text);
Console.WriteLine(dt);
2025/11/16 0:00:00
正しい日付形式であれば自動で変換できます。入力フォームを作るときなどに役立ちます。
まとめ
DateTime型の基礎を押さえて日付操作の理解を深める
C#の日付型であるDateTimeは、日付と時刻をひとまとめで扱える便利な型であり、プログラムのさまざまな場面で活用されます。今回の記事では、現在時刻の取得、特定日付の作成、日付の分解、日付の加算・減算、フォーマットでの表示変更、文字列から日付への変換など、DateTimeの基本的でありながら必ず知っておきたい操作をひととおり学びました。
日付は単に表示するだけではなく、締切日を計算したり、予約時刻を比較したり、ログに正確な時間を残したりするなど、実際のシステム開発に欠かせない値です。そのため、DateTime型の特徴や使い方を理解しておくことは、今後のC#学習において大きな財産になります。とくにAddDays・AddHoursのような直感的なメソッドは、一度覚えてしまえばさまざまな場面で応用できます。
日付フォーマットと文字列変換は実務でも必須の技術
文章として日付を整形したいときには、ToString()に書式を指定する方法が非常に強力です。「yyyy/MM/dd」や「yyyy年MM月dd日 HH時mm分ss秒」など、用途に合わせて自在に書式を変更できます。これによって、ログ出力、レポート作成、画面表示などがより読みやすい形になります。また、ユーザー入力を扱う場面では、文字列をDateTime.Parseで変換する必要があります。正しい形式であれば簡単にDateTimeへ変換できるため、入力チェックやフォーム処理にも役立ちます。
表示形式の変換だけではなく、日付の加算・減算を行うことで「○日後」「○日前」「指定時刻の○時間後」のような計算が自然に書ける点もDateTimeの大きな魅力です。実務でも頻繁に扱う機能のため、今回の知識をしっかり身につけておくと、日付操作の幅が大きく広がります。
まとめ用サンプルコード(基礎〜応用まで)
using System;
class Program
{
static void Main()
{
// 現在の日付と時刻を取得
DateTime now = DateTime.Now;
Console.WriteLine("現在:" + now.ToString("yyyy/MM/dd HH:mm:ss"));
// 特定の日付の作成
DateTime birthday = new DateTime(1995, 7, 20);
Console.WriteLine("誕生日:" + birthday.ToString("yyyy年MM月dd日"));
// 日付の加算・減算
DateTime nextWeek = now.AddDays(7);
DateTime threeHoursAgo = now.AddHours(-3);
Console.WriteLine("1週間後:" + nextWeek);
Console.WriteLine("3時間前:" + threeHoursAgo);
// 年月日・時刻を取り出す
Console.WriteLine("年:" + now.Year);
Console.WriteLine("月:" + now.Month);
Console.WriteLine("日:" + now.Day);
Console.WriteLine("時:" + now.Hour);
Console.WriteLine("分:" + now.Minute);
// 文字列をDateTimeに変換
string input = "2025/11/16";
DateTime parsed = DateTime.Parse(input);
Console.WriteLine("変換結果:" + parsed.ToString("yyyy/MM/dd"));
}
}
このサンプルでは、現在時刻の取得から日付の作成、加算・減算、フォーマット変換、文字列からの変換まで、DateTimeが持つ便利な機能を一通り確認できます。日付という情報は、システム開発だけでなく日常的なアプリケーションでも頻繁に使われるため、こうした基礎をしっかり理解しておくことで、C#での開発がよりスムーズになります。 また、フォーマット指定を活用することで、プログラムの出力をより読みやすく整えられるようになります。実際の業務ではログ記録や画面表示の整形が必須のため、この技術を身につけるだけでプログラムの品質が大きく向上します。
生徒
「DateTimeって思っていたよりいろんなことができるんですね!特にAddDaysで簡単に日付を計算できるのが便利だと思いました。」
先生
「そうなんです。日付計算は実務で本当によく使う場面なので、直感的に書けるのはありがたいですよね。フォーマット指定も覚えておくと、必要な形にすぐ整形できますよ。」
生徒
「ユーザー入力から日付をParseで変換できるのも便利ですね。予約の入力フォームとかで使えそうです!」
先生
「その通り。DateTimeはC#で日付を扱うための中心になる型だから、今日の内容をしっかり覚えておくと今後の学習でも役に立ちます。」
生徒
「はい!もっと複雑な日時処理にも挑戦してみます!」