日付の計算
日付を加算、減算、比較します。
「日付の計算」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
日付を使った計算
DateTime の値は不変です。計算によって元の値が変更されることはありません。その代わり、すべての操作はまったく新しい DateTime を返します。
このレッスンでは、時間の加算と減算、日付の比較、イベントまであと何日かといった問いへの答え方を学びます。
AddDays
AddDays メソッドは、指定した日数だけ後の日付を返します。過去の日付に移動するには、負の数を渡します。
DateTime は不変なので、返された値を使用する必要があります。元の値は変更されません。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
DateTime later = d.AddDays(10);
Console.WriteLine(later.ToString("yyyy-MM-dd"));
}
}Add 系メソッド
単位ごとに Add メソッドがあります。AddHours、AddMinutes、AddSeconds、AddMonths、AddYears などです。
いずれも正の数と負の数を受け取るため、未来と過去の両方に対応する一連のメソッドとして使用できます。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
Console.WriteLine(d.AddHours(5).Hour);
}
}AddMonths による月末日の調整
AddMonths は月の日数を適切に処理します。1月31日に1か月を加えると、無効な日付ではなく2月28日または29日になります。
これにより、各月の日数を手動で確認する必要がなくなります。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 1, 31);
Console.WriteLine(d.AddMonths(1).ToString("yyyy-MM-dd"));
}
}過去の日付への移動
過去に移動するには、負の引数を渡します。AddDays(-7) は1週間前の日付を返します。
日数を減算する専用の Subtract メソッドはありません。負の値を使えば簡潔に対応できます。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5);
Console.WriteLine(d.AddDays(-7).ToString("yyyy-MM-dd"));
}
}TimeSpan の加算
+ 演算子または Add メソッドを使って、TimeSpan を DateTime に直接加算できます。
すでに時間間隔があり、それを使って日付を移動したい場合に便利です。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
DateTime later = d + TimeSpan.FromHours(3);
Console.WriteLine(later.Hour);
}
}日付間の差
ある日付から別の日付を減算すると、その間隔を表す TimeSpan が生成されます。
TotalDays を読み取ると、月や年をまたぐ場合でも、2つの日付の間の日数を数えられます。
using System;
class Program
{
static void Main()
{
DateTime start = new DateTime(2024, 1, 1);
DateTime end = new DateTime(2024, 3, 1);
Console.WriteLine((end - start).TotalDays);
}
}イベントまでの日数
よくある処理として、未来の日付までの日数を数える方法があります。今日の日付を目標の日付から減算し、TotalDays または Days を読み取ります。
ここでは固定の日付を使うことで、学習時の出力を予測しやすくしています。
using System;
class Program
{
static void Main()
{
DateTime today = new DateTime(2024, 3, 1);
DateTime party = new DateTime(2024, 3, 15);
Console.WriteLine((party - today).Days);
}
}日付の比較
DateTime の値は <、>、== で比較できます。過去の日付は、未来の日付より小さい値です。
比較結果を明示的に取得する必要がある場合は、CompareTo や Equals などのメソッドも使用できます。
using System;
class Program
{
static void Main()
{
DateTime a = new DateTime(2024, 1, 1);
DateTime b = new DateTime(2024, 6, 1);
Console.WriteLine(a < b);
}
}うるう年と月の日数
暦に関する問いに答える静的ヘルパーが2つあります。DateTime.IsLeapYear(year) は、指定した年がうるう年であれば true を返します。
DateTime.DaysInMonth(year, month) は、指定した月の日数を返し、2月も正しく処理します。
using System;
class Program
{
static void Main()
{
Console.WriteLine(DateTime.IsLeapYear(2024));
Console.WriteLine(DateTime.DaysInMonth(2024, 2));
}
}日の始まりと終わり
日の始まりを取得するには、時刻を午前0時に切り捨てる Date プロパティを使用します。
日の最後の瞬間を取得するには、1日を加えてから1ティック減算するか、23:59:59を加えます。Date プロパティは、これらの処理の基本となる最も簡単な方法です。
using System;
class Program
{
static void Main()
{
DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
Console.WriteLine(d.Date.ToString("yyyy-MM-dd HH:mm"));
}
}確認問題
2024年1月31日を開始日にして AddMonths(1) を呼び出すと、どの日付になりますか。
まとめ
DateTime の計算は新しい値を返します。AddDays、AddMonths などを使って日付を移動し、過去に移動する場合は負の値を使用します。
日付を減算すると TimeSpan が得られます。演算子で比較し、IsLeapYear、DaysInMonth、Date を暦に関する処理に使用できます。
よくある質問
「日付の計算」レッスンは無料ですか?
はい。「日付の計算」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「日付の計算」で何を学びますか?
日付を加算、減算、比較します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「日付の計算」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。