C#での日付計算方法とは?TimeSpanで加減算とAdd関数で加減算
- システム
エンジニア - C#で日付を計算するにはどうすればいいのですか。
- プロジェクト
マネージャー - C#で日付を計算するにはDateTimeクラスとTimeSpanクラスを利用したり、AddYears/AddMonths/AddDaysなどを利用したりします。
C#での日付計算方法とは?
今回は、C#での日付計算方法について説明します。DateTimeクラスとTimeSpanクラスを利用した日付計算や、AddYears/AddMonths/AddDaysなどを利用した日付計算について紹介します。また、日付差分の計算方法についても紹介します。
C#での日付計算方法に興味のある方はぜひご覧ください。
TimeSpanで加減算
C#でのDateTimeクラスとTimeSpanクラスを利用した日付計算方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
using System;
public class Hello{
public static void Main(){
// 初期化
DateTime dateTime = DateTime.Parse(""2021/03/22 10:20:30"");
TimeSpan timeSpan = new TimeSpan(2, 10, 20);
Console.WriteLine(dateTime.ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/03/22 10:20:30
Console.WriteLine(timeSpan); // 02:10:20
// 日付計算(DateTimeとTimeSpanの加算)
Console.WriteLine((dateTime + timeSpan).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/03/22 12:30:50
// 日付計算(DateTimeとTimeSpanの減算)
Console.WriteLine((dateTime - timeSpan).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/03/22 08:10:10
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
2021/03/22 10:20:30
02:10:20
2021/03/22 12:30:50
2021/03/22 08:10:10
|
このようにC#では、DateTimeとTimeSpanを利用した加減算ができます。
Add関数で加減算
C#では、DateTimeクラスのAdd関数を利用した日付計算ができます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System;
public class Hello{
public static void Main(){
// 初期化
DateTime dateTime = DateTime.Parse(""2021/03/22 10:20:30"");
Console.WriteLine(dateTime.ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/03/22 10:20:30
// AddYearsで日付計算(年の加減算)
Console.WriteLine(""AddYears"");
Console.WriteLine(dateTime.AddYears(1).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2022/03/22 10:20:30
Console.WriteLine(dateTime.AddYears(-1).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2020/03/22 10:20:30
// AddMonthsで日付計算(月の加減算)
Console.WriteLine(""AddMonths"");
Console.WriteLine(dateTime.AddMonths(1).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/04/22 10:20:30
Console.WriteLine(dateTime.AddMonths(-1).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/02/22 10:20:30
// AddDaysで日付計算(日の加減算)
Console.WriteLine(""AddDays"");
Console.WriteLine(dateTime.AddDays(1).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/03/23 10:20:30
Console.WriteLine(dateTime.AddDays(-1).ToString(""yyyy/MM/dd HH:mm:ss"")); // 2021/03/21 10:20:30
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
|
2021/03/22 10:20:30
AddYears
2022/03/22 10:20:30
2020/03/22 10:20:30
AddMonths
2021/04/22 10:20:30
2021/02/22 10:20:30
AddDays
2021/03/23 10:20:30
2021/03/21 10:20:30
|
ここでは紹介していませんが、AddHours/AddMinutes/AddSecondsなどの関数もあります。このようにC#では、DateTimeクラスのAdd関数を利用した日付計算ができます。
Add関数で加減算(応用編)
C#のAdd関数を応用した日付計算について紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
using System;
public class Hello{
public static void Main(){
// 初期化
DateTime dateTime = DateTime.Parse(""2021/03/21"");
Console.WriteLine(dateTime.ToString(""yyyy/MM/dd"")); // 2021/03/21
// 当月初日
Console.WriteLine(new DateTime(dateTime.Year, dateTime.Month, 1).ToString(""yyyy/MM/dd"")); // 2021/03/01
// 当月末日
Console.WriteLine(new DateTime(dateTime.Year, dateTime.Month, 1).AddMonths(1).AddDays(-1).ToString(""yyyy/MM/dd"")); // 2021/03/31
// 翌月初日
Console.WriteLine(new DateTime(dateTime.Year, dateTime.Month, 1).AddMonths(1).ToString(""yyyy/MM/dd"")); // 2021/04/01
// 翌月末日
Console.WriteLine(new DateTime(dateTime.Year, dateTime.Month, 1).AddMonths(2).AddDays(-1).ToString(""yyyy/MM/dd"")); // 2021/04/30
// 年度
Console.WriteLine(dateTime.AddMonths(-3).Year); // 2020
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
2021/03/21
2021/03/01
2021/03/31
2021/04/01
2021/04/30
2020
|
日付差分
C#での日付差分の計算方法について紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
using System;
public class Hello{
public static void Main(){
// 初期化
DateTime dateFrom = DateTime.Parse(""2021/03/21 10:20:30"");
DateTime dateTo = DateTime.Parse(""2021/03/22 10:20:30"");
// 差分を計算
TimeSpan interval = dateTo - dateFrom;
Console.WriteLine(""DateDiff: {0} Days"", interval.TotalDays); // DateDiff: 1 Days
Console.WriteLine(""HourDiff: {0} Hours"", interval.TotalHours); // HourDiff: 24 Hours
Console.WriteLine(""MinuteDiff: {0} Minutes"", interval.TotalMinutes); // MinuteDiff: 1440 Minutes
Console.WriteLine(""SecondDiff: {0} Seconds"", interval.TotalSeconds); // SecondDiff: 86400 Seconds
Console.WriteLine(""MillisecondDiff: {0} Milliseconds"", interval.TotalMilliseconds); // MillisecondDiff: 86400000 Milliseconds
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
|
DateDiff: 1 Days
HourDiff: 24 Hours
MinuteDiff: 1440 Minutes
SecondDiff: 86400 Seconds
MillisecondDiff: 86400000 Milliseconds
|
- システム
エンジニア - C#での日付計算方法がよくわかりました。
- プロジェクト
マネージャー - 日付差分の計算方法についても紹介しましたので参考にしてください。
まとめ
いかがでしたでしょうか。C#でのDateTimeクラスとTimeSpanクラスを利用した日付計算や、AddYears/AddMonths/AddDaysなどを利用した日付計算について紹介しました。また、日付差分の計算方法についても紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)