DateTime型で足し算・引き算を行う方法(C#)

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
ロリポップ! はコスパのよい初心者向けサーバーです~

目次

はじめに

DateTime型とDateTime型を直接足し算することはできません。

詳しい理由はよくわかりませんが、単純に意味のある値にならないからでしょうか。

例えば、2000年6月と2030年3月を足し算することを考えます。

結果は、4030年の9月になりますが、このような計算を実際の業務ですることは皆無です。

とはいえ、DateTime型で表現されている値の10日後の日付を得たいという欲求はあるでしょう。

このような状況を解決する方法は主に2つあります。

1:時間間隔を意味するTimeSpan型を使用
2:DateTime型で用意されているメソッドを使用する

TimeSpan型の使用

TimeSpan型は時間間隔を扱います。

以下のような計算パターンが許されます。

TimeSpan=DateTime-DateTime
DateTime =DateTime±TimeSpan

ソースコード

実行結果

18456.02:20:20
2000/03/23 8:30:20
2050/09/27 10:50:40
2000/03/23 8:30:20
2050/09/27 10:50:40

DateTime型のメソッド

DateTime型では、以下のようなメソッドが用意されています。

メソッド 意味 引数の型
AddYears 年を足す int
AddMonths 月を足す int
AddDays 日を足す double
AddHours 時を足す double
AddMinutes 分を足す double
AddSeconds 秒を足す double
AddMilliseconds ミリ秒を足す double
Add 時間間隔を足す TimeSpan

年と月に関するメソッドの引数は整数のみしか受け付けません。

また、引き算をしたい場合は、マイナスの値を入れればいいです。

ソースコード

実行結果

2000/03/20 8:30:20
2000/03/20 8:30:20
2000/03/25 8:30:20
2000/03/22 8:30:20

注意すべき点として、

dt1.AddDays(5);

と書いただけではdt1の値が変更されません。

dt1 = dt1.AddDays(5);

と変更した値を代入する必要があります。

関連記事

~ギャンブルに絶対儲かる必勝法があるのだろうか?~

私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。

このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。

ギャンブルの必勝法が本当に儲かるかプログラミングで検証してみた

     

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)