C# サンプル集 |
Visual Basic 中学校 > C# サンプル集 > C# サンプル集目次 >
日付のひき算
2020/7/19
何日経過したかを求める
DateTime date1 =
new
DateTime(2025, 1,
12); DateTime date2 = new DateTime(2024, 12, 25); int result = (date1 - date2).Days; System.Diagnostics.Debug.WriteLine(result); // 18 と表示されます。 |
60日と8時間50分23秒前 を求める
DateTime
sourceDate = new
DateTime(2024, 8,
20); TimeSpan span = new TimeSpan(60, 8, 50, 23); //60日と8時間50分23秒を表す期間 DateTime result = sourceDate - span; System.Diagnostics.Debug.WriteLine(result.ToString(@"yyyy\/MM\/dd HH\:mm\:ss")); // 2024/06/20 15:09:37 と表示されます。 |
→ Debug.WriteLineが表示される場所
14日前の日付を求める
DateTime
sourceDate = new
DateTime(2025, 1,
12); DateTime result = sourceDate.AddDays(-14); System.Diagnostics.Debug.WriteLine(result.ToString(@"yyyy\/MM\/dd")); // 2024/12/29 と表示されます。 |
→ Debug.WriteLineが表示される場所
14ヶ月前の日付を求める
DateTime
sourceDate = new
DateTime(2025, 1,
12); DateTime result = sourceDate.AddMonths(-14); System.Diagnostics.Debug.WriteLine(result.ToString(@"yyyy\/MM\/dd")); // 2023/11/12 と表示されます。 |
→ Debug.WriteLineが表示される場所
次の例は 2025/3/31 の1ヶ月前の日付を求めます。
2月には31日がないので結果は28日になる点がポイントです。
DateTime
sourceDate = new
DateTime(2025, 3,
31); DateTime result = sourceDate.AddMonths(-1); System.Diagnostics.Debug.WriteLine(result.ToString(@"yyyy\/MM\/dd")); // 2025/02/28 と表示されます。 |
→ Debug.WriteLineが表示される場所
14年前の日付を求める
DateTime
sourceDate = new
DateTime(2025, 1,
12); DateTime result = sourceDate.AddYears(-14); System.Diagnostics.Debug.WriteLine(result.ToString(@"yyyy\/MM\/dd")); // 2011/11/12 と表示されます。 |
メモ:紀元前は表現できません。ArgumentOutOfRangeException が発生します。
次の例は 2024/2/29 の1年前の日付を求めます。
2023年の2月には29日がないので結果は28日になる点がポイントです。
DateTime
sourceDate = new
DateTime(2024, 2,
29); DateTime result = sourceDate.AddYears(-1); System.Diagnostics.Debug.WriteLine(result.ToString(@"yyyy\/MM\/dd")); // 2023/02/28 と表示されます。 |
→ Debug.WriteLineが表示される場所
何ヶ月経過したかを求める
DateTime date1 =
new
DateTime(2025, 1,
12); DateTime date2 = new DateTime(2016, 6, 27); int month = 0; while(date2.AddMonths(month + 1) < date1) { month++; } System.Diagnostics.Debug.WriteLine(month); // 102 と表示されます。 |
何年経過したかを求める
DateTime date1 =
new
DateTime(2025, 1,
12); DateTime date2 = new DateTime(2016, 6, 27); int year = 0; while(date2.AddYears(year + 1) < date1) { year++; } System.Diagnostics.Debug.WriteLine(year); // 8 と表示されます。 |
聖徳太子が生まれてから何日経ったかを求める
//この聖徳太子の生年月日は日本書紀の暦を機械的に西暦に置き換えたものであり、厳密ではありません。 DateTime taishiBirthday = new DateTime(574, 2, 7); double totalDays = (DateTime.Now - taishiBirthday).TotalDays; System.Diagnostics.Debug.WriteLine("聖徳太子が生まれてから " + totalDays.ToString("0") + " 日経過しています。"); |
弥勒が現れるまで後何年かを求める
long shakaDeath
= -486; //釈迦が死亡したおおよその年 long mirokuSpan = 5670000000; //釈迦死亡後、弥勒菩薩が現れるまで56億7千万年 long mirokuYear = shakaDeath + mirokuSpan; long untilMiroku = mirokuYear - DateTime.Now.Year; System.Diagnostics.Debug.WriteLine("弥勒が現れるまで後 " + untilMiroku + "年です。"); |
メモ:太陽系ができたのが約45億年前です。それより長い時間待つ必要があります。