カテゴリ: C# 更新日: 2025/12/22

C#のTimeSpan型の使い方!時間の差を計算しよう

C#のTimeSpan型の使い方!時間の差を計算しよう
C#のTimeSpan型の使い方!時間の差を計算しよう

先生と生徒の会話形式で理解しよう

生徒

「時間の計算ってC#でできますか?例えば二つの時刻の差を知りたいとき、どうすればいいのかな?」

先生

「C#ではTimeSpanという型を使うことで、時間差の計算や経過時間の扱いがとても簡単にできますよ。」

生徒

「TimeSpanって初めて聞きました。どんなときに使うものなんですか?」

先生

「それでは、TimeSpanの基本的な使い方や、よくある時間計算の例を順番に見ていきましょう。」

1. TimeSpanとは?

1. TimeSpanとは?
1. TimeSpanとは?

C#のTimeSpan(たいむすぱん)は、時間の長さを表す型です。時間そのものを表すDateTimeとは違い、TimeSpanは「差」を表すための型です。たとえば「2時間30分」や「45秒」など、具体的な時間の長さを扱います。プログラムの中で経過時間を計測したり、二つの時刻の差を求めたりするときに役立ちます。さらに、ゲームやアプリの操作記録を扱うときにもよく使われるため、初心者のうちに理解しておくと後でとても便利です。

2. TimeSpanを作成する基本

2. TimeSpanを作成する基本
2. TimeSpanを作成する基本

TimeSpanを作る方法はいくつかありますが、初心者がまず覚えたいのは「時間・分・秒などを直接指定する方法」と「DateTimeの差を計算して自動的に作られる方法」です。TimeSpan.FromHours のようなメソッドを使うと簡単に時間の長さを作れます。数値を直接渡すため、初心者にも理解しやすい書き方になっています。


TimeSpan span = TimeSpan.FromHours(2.5);
Console.WriteLine(span);

02:30:00

この例では「2.5時間=2時間30分」のTimeSpanが作られています。アプリ開発でよく使われる「作業時間」や「経過時間」の扱いにもぴったりです。また、FromMinutesやFromSecondsなどもあるため、用途に応じて細かく調整できます。

3. DateTime同士の差からTimeSpanを求める方法

3. DateTime同士の差からTimeSpanを求める方法
3. DateTime同士の差からTimeSpanを求める方法

実際の開発で最も使われるのがこのパターンです。「開始時刻」と「終了時刻」から差を求める場合、演算子のマイナスを使うだけでTimeSpanが得られる仕組みになっています。例えば「朝9時から夕方5時まで働いた」ような時間を計算する場合に特に役立ちます。


DateTime start = new DateTime(2025, 11, 18, 9, 0, 0);
DateTime end = new DateTime(2025, 11, 18, 17, 0, 0);

TimeSpan diff = end - start;
Console.WriteLine(diff);

08:00:00

このように、TimeSpanは「8時間」という結果を返してくれます。日時の計算を行う場面では非常に直感的で、自然な記述になっているため初心者でも扱いやすいです。プログラムを作るときに、作業時間の管理、イベント時間の計測などにも応用できます。

4. TimeSpanから時間・分・秒を取り出す

4. TimeSpanから時間・分・秒を取り出す
4. TimeSpanから時間・分・秒を取り出す

TimeSpanの中から、時間、分、秒などを個別に取り出すことも簡単にできます。ゲームのタイマーや作業時間の表示など、ユーザーに見せる形に整えるときに必ず使う操作なので、覚えておくととても便利です。


TimeSpan span = TimeSpan.FromMinutes(150);

Console.WriteLine(span.Hours);
Console.WriteLine(span.Minutes);
Console.WriteLine(span.TotalMinutes);

2
30
150

Hoursは「整数の時間部分」、Minutesは「整数の分部分」、TotalMinutesは「全体を分に換算した値」です。見た目の時間表示と内部での計算を区別するためにも、Total系のプロパティ(TotalHours、TotalSecondsなど)を知っておくと開発の幅が広がります。

5. TimeSpanを使った加算と減算

5. TimeSpanを使った加算と減算
5. TimeSpanを使った加算と減算

TimeSpanには足し算や引き算ができる機能もあります。「あと30分延長」「10分短縮」のように時間を増減させたいときに便利です。時間を調整する処理はさまざまなアプリで必要になるため、これも基本として押さえておきたいポイントです。


TimeSpan span = TimeSpan.FromHours(1);
TimeSpan added = span + TimeSpan.FromMinutes(30);
Console.WriteLine(added);

01:30:00

このように、TimeSpanは計算を行いやすいように設計されています。複雑な時間管理の処理もシンプルな記述で済むため、初心者でも安心して使えます。特にスケジュール管理やアプリのログ機能を作るときなど、さまざまな場面で役立ちます。

まとめ

まとめ
まとめ

TimeSpan型で時間計算の考え方を整理しよう

この記事では、C#におけるTimeSpan型の使い方について、基礎から応用までを順番に確認してきました。 TimeSpanは「日時そのもの」を表すDateTimeとは異なり、「時間の長さ」や「時間の差」を扱うための型です。 二つの時刻の差を計算したり、経過時間や作業時間を管理したりする場面で非常によく使われます。 C#で時間計算を行う際にTimeSpanを正しく理解しておくことで、プログラム全体の可読性や安全性も高まります。

TimeSpanの基本として、FromHoursやFromMinutesなどのメソッドを使えば、 「何時間」「何分」「何秒」といった感覚的な指定で時間の長さを作成できます。 数値を直接指定するため、初心者でも直感的に理解しやすく、実務でも頻繁に利用されます。 また、DateTime同士を引き算することで自動的にTimeSpanが得られる点は、 C#の時間計算がとても扱いやすい理由の一つです。

時間差計算と表示で意識したいポイント

TimeSpanを扱ううえで重要なのが、部分的な値と全体の値の違いです。 HoursやMinutesは「表示用」として使われることが多く、 TotalHoursやTotalMinutesは「計算用」として使われることが多いプロパティです。 この違いを理解していないと、想定と異なる計算結果になってしまうことがあります。 プログラムの中で時間をどう扱うかを意識しながら、適切なプロパティを選ぶことが大切です。

さらに、TimeSpanは加算や減算も簡単に行えるため、 スケジュール調整や制限時間の管理、アプリの利用時間測定など、 幅広い用途に応用できます。 C#で時間計算を行う場合、TimeSpanを中心に考えることで、 コードがすっきりと整理され、保守性も向上します。

まとめとしてのサンプルプログラム

ここで、この記事の内容を整理したサンプルプログラムを見てみましょう。 開始時刻と終了時刻から作業時間を計算し、TimeSpanの特徴を確認できる構成になっています。


DateTime start = new DateTime(2025, 11, 18, 10, 0, 0);
DateTime end = new DateTime(2025, 11, 18, 15, 45, 0);

TimeSpan workTime = end - start;

Console.WriteLine("作業時間:" + workTime);
Console.WriteLine("作業時間(分):" + workTime.TotalMinutes);

このように、TimeSpanを使えば時間の差を簡単に計算でき、 表示用と計算用の両方に対応できます。 日々の業務アプリや学習用プログラムでも、そのまま活用できる考え方です。

先生と生徒の振り返り会話

生徒:「TimeSpanって、ただの時間表示用だと思っていましたが、計算にすごく向いているんですね。」

先生:「そうですね。C#では時間の差や経過時間を扱う場面が多いので、TimeSpanは欠かせない存在です。」

生徒:「DateTimeを引き算するだけでTimeSpanになるのが、とても分かりやすかったです。」

先生:「直感的に書けるのがC#の良いところですね。HoursとTotalHoursの違いも、しっかり理解できましたか?」

生徒:「はい。表示用と計算用で使い分ける必要があることが分かりました。」

先生:「その理解があれば、時間管理のプログラムはぐっと書きやすくなりますよ。」

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方