TimeSpanと期間
時間の経過を測定します。
「TimeSpanと期間」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
TimeSpan とは
DateTime が時点を表すのに対し、TimeSpan は2時間や90分のような時間の長さを表します。
これは暦に結び付いていない経過時間です。ストップウォッチの結果、タイムアウト、2つの日付の間隔などに使用します。
TimeSpan の作成
時間、分、秒を受け取るコンストラクターがあります。new TimeSpan(hours, minutes, seconds) のように記述します。
したがって、new TimeSpan(1, 30, 0) は1時間30分を表します。値は見やすい h:mm:ss 形式で表示されます。
using System;
class Program
{
static void Main()
{
TimeSpan span = new TimeSpan(1, 30, 0);
Console.WriteLine(span);
}
}ファクトリーメソッド
多くの場合、ファクトリーメソッドを使うとコードが読みやすくなります。TimeSpan.FromMinutes(90) は90分の時間間隔を作成します。
対応するヘルパーとして、FromHours、FromSeconds、FromDays、FromMilliseconds もあります。
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span);
}
}合計値と構成要素の値
TimeSpan のプロパティには2つの種類があります。Hours、Minutes、Seconds は時間を分解した構成要素です。
TotalMinutes のような Total... 形式のプロパティは、時間間隔全体を1つの単位で小数として表します。
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span.Hours);
Console.WriteLine(span.TotalMinutes);
}
}構成要素と合計値の違い
90分の場合、時間間隔は1時間30分に分解されるため、Hours は1、Minutes は30です。
一方、TotalHours は1.5、TotalMinutes は90です。これらは時間間隔全体を1つの単位で数えるためです。
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromMinutes(90);
Console.WriteLine(span.TotalHours);
}
}2つの日付の減算
ある DateTime から別の DateTime を減算すると、結果は TimeSpan になります。
これは、イベントの長さなど、2つの時点の間にどれだけ時間が経過したかを調べる一般的な方法です。
using System;
class Program
{
static void Main()
{
DateTime start = new DateTime(2024, 3, 5, 9, 0, 0);
DateTime end = new DateTime(2024, 3, 5, 11, 30, 0);
TimeSpan diff = end - start;
Console.WriteLine(diff.TotalHours);
}
}TimeSpan の加算
通常の + 演算子と - 演算子を使って、TimeSpan の値を加算または減算できます。
2つの時間間隔を組み合わせると、より長い時間間隔になります。複数の区間の合計を求める場合に便利です。
using System;
class Program
{
static void Main()
{
TimeSpan a = TimeSpan.FromMinutes(45);
TimeSpan b = TimeSpan.FromMinutes(15);
Console.WriteLine((a + b).TotalMinutes);
}
}負の時間間隔
終了時刻が開始時刻より前の場合や、減算の結果として、TimeSpan は負の値になることがあります。
Duration メソッドは絶対値を返し、Negate は符号を反転します。大きさだけが必要な場合に便利です。
using System;
class Program
{
static void Main()
{
TimeSpan span = TimeSpan.FromHours(-3);
Console.WriteLine(span.Duration().TotalHours);
}
}時間間隔の比較
TimeSpan の値は、数値と同じように <、>、== で比較できます。
これにより、最大許容時間を適用する場合などに、ある時間間隔が別の時間間隔より長いかどうかを確認できます。
using System;
class Program
{
static void Main()
{
TimeSpan limit = TimeSpan.FromHours(2);
TimeSpan used = TimeSpan.FromMinutes(150);
Console.WriteLine(used > limit);
}
}ゼロと定数
TimeSpan.Zero は経過時間がないことを表し、合計の初期値として便利です。
時間間隔の範囲の上限と下限を表す TimeSpan.MinValue と TimeSpan.MaxValue もあります。
using System;
class Program
{
static void Main()
{
TimeSpan total = TimeSpan.Zero;
total += TimeSpan.FromMinutes(10);
Console.WriteLine(total.TotalMinutes);
}
}TimeSpan の書式設定
カスタム文字列を使って TimeSpan の書式を設定できます。たとえば @"hh\:mm" は時間と分を表示します。
バックスラッシュはコロンをエスケープし、コロンをそのまま表示できるようにします。簡単な出力であれば、既定の ToString で十分なことがほとんどです。
using System;
class Program
{
static void Main()
{
TimeSpan span = new TimeSpan(2, 5, 0);
Console.WriteLine(span.ToString(@"hh\:mm"));
}
}確認問題
90分の TimeSpan があります。値として 1.5 を返すプロパティはどれでしょうか。
まとめ
TimeSpan は時間間隔です。new TimeSpan(...) や FromMinutes などのファクトリーメソッドで作成します。
構成要素のプロパティ(Hours)は、Total... 形式のプロパティとは異なります。2つの DateTime を減算すると TimeSpan になり、時間間隔の加算、比較、書式設定ができます。
よくある質問
「TimeSpanと期間」レッスンは無料ですか?
はい。「TimeSpanと期間」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「TimeSpanと期間」で何を学びますか?
時間の経過を測定します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「TimeSpanと期間」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- DateTimeを作成する
- 日付をフォーマットする
- TimeSpanと期間
- 日付の計算