C#でのDateDiffの求め方とは?日・時間・分・秒・ミリ秒の差分と月・年・営業日の差分
公開日時: 更新日時:

- SE
- C#で日付の差分を求めるにはどうすればいいのですか。
- PM
- DateTimeクラス・TimeSpanクラスを利用して年・月・日・時間・分・秒・ミリ秒の差分を求めます。
C#でのDateDiffの求め方とは?
今回は、C#での日付差分を求める方法について説明します。VB.NETではDateDiff関数という、日付の差分を求める関数がありますが、C#にはありません。その代わりに、DateTimeクラス・TimeSpanクラスを利用して日付の差分を求める方法を紹介します。
C#における日付差分の求め方に興味のある方はぜひご覧ください。
日・時間・分・秒・ミリ秒の差分
C#での日・時間・分・秒・ミリ秒の差分計算方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
using System;
public class Hello{
// 時間差の計算用関数
static void CalcInterval(DateTime day1, DateTime day2){
DateTime dateFrom = day1;
DateTime dateTo = day2;
// 大きいDateTime - 小さいDateTimeにする
if (day1 > day2){
dateFrom = day2;
dateTo = day1;
}
// 差分を計算
TimeSpan interval = dateTo - dateFrom;
Console.WriteLine(“DateDiff: {0} Days”, interval.TotalDays); // 日の差分
Console.WriteLine(“HourDiff: {0} Hours”, interval.TotalHours); // 時間の差分
Console.WriteLine(“MinuteDiff: {0} Minutes”, interval.TotalMinutes); // 分の差分
Console.WriteLine(“SecondDiff: {0} Seconds”, interval.TotalSeconds); // 秒の差分
Console.WriteLine(“MillisecondDiff: {0} Milliseconds”, interval.TotalMilliseconds); // ミリ秒の差分
}
public static void Main(){
var day1 = new DateTime(2021, 3, 21);
var day2 = new DateTime(2021, 3, 25);
CalcInterval(day1, day2);
var day3 = new DateTime(2021, 3, 21, 2, 1, 15);
var day4 = new DateTime(2021, 3, 25, 3, 2, 30);
CalcInterval(day3, day4);
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
|
DateDiff: 4 Days
HourDiff: 96 Hours
MinuteDiff: 5760 Minutes
SecondDiff: 345600 Seconds
MillisecondDiff: 345600000 Milliseconds
DateDiff: 4.04253472222222 Days
HourDiff: 97.0208333333333 Hours
MinuteDiff: 5821.25 Minutes
SecondDiff: 349275 Seconds
MillisecondDiff: 349275000 Milliseconds
|
このようにC#では、日・時間・分・秒・ミリ秒の差分を算出できます。
月の差分
C#での月の差分計算方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
using System;
public class Hello{
// 時間差の計算用関数
static void CalcMonthInterval(DateTime day1, DateTime day2){
DateTime dateFrom = day1;
DateTime dateTo = day2;
// 大きいDateTime - 小さいDateTimeにする
if (day1 > day2){
dateFrom = day2;
dateTo = day1;
}
// 差分を計算
var interval = (dateTo.Month + (dateTo.Year - dateFrom.Year) * 12) - dateFrom.Month;
Console.WriteLine(“MonthDiff: {0} Months”, interval); // 月の差分
}
public static void Main(){
var day1 = new DateTime(2020, 3, 21);
var day2 = new DateTime(2021, 3, 25);
CalcMonthInterval(day1, day2); // MonthDiff: 12 Months
var day3 = new DateTime(2019, 12, 21, 2, 1, 15);
var day4 = new DateTime(2021, 3, 25, 3, 2, 30);
CalcMonthInterval(day3, day4); // MonthDiff: 15 Months
var day5 = new DateTime(2021, 3, 21, 2, 1, 15);
var day6 = new DateTime(2021, 3, 25, 3, 2, 30);
CalcMonthInterval(day5, day6); // MonthDiff: 0 Months
}
}
|
実行結果は以下のようになります。
1
2
3
|
MonthDiff: 12 Months
MonthDiff: 15 Months
MonthDiff: 0 Months
|
このようにC#では、月の差分を算出できます。
年の差分
C#での年の差分計算方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
using System;
public class Hello{
// 時間差の計算用関数
static void CalcYearInterval(DateTime day1, DateTime day2){
DateTime dateFrom = day1;
DateTime dateTo = day2;
// 大きいDateTime - 小さいDateTimeにする
if (day1 > day2){
dateFrom = day2;
dateTo = day1;
}
// 差分を計算
var interval = dateTo.Year - dateFrom.Year;
Console.WriteLine(“YearDiff: {0} Years”, interval); // 年の差分
}
public static void Main(){
var day1 = new DateTime(2020, 3, 21);
var day2 = new DateTime(2021, 3, 25);
CalcYearInterval(day1, day2); // YearDiff: 1 Years
var day3 = new DateTime(2021, 12, 21, 2, 1, 15);
var day4 = new DateTime(2019, 3, 25, 3, 2, 30);
CalcYearInterval(day3, day4); // YearDiff: 2 Years
var day5 = new DateTime(2021, 3, 21, 2, 1, 15);
var day6 = new DateTime(2021, 3, 25, 3, 2, 30);
CalcYearInterval(day5, day6); // YearDiff: 0 Years
}
}
|
実行結果は以下のようになります。
1
2
3
|
YearDiff: 1 Years
YearDiff: 2 Years
YearDiff: 0 Years
|
営業日の差分
C#での営業日の差分計算方法を紹介します。ここでは、土日以外を営業日とし、祝日は加味しません。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
using System;
public class Hello{
// 営業日の計算用関数
static void CalcBusinessDays(DateTime day1, DateTime day2){
DateTime dateFrom = day1;
DateTime dateTo = day2;
// 大きいDateTime - 小さいDateTimeにする
if (day1 > day2){
dateFrom = day2;
dateTo = day1;
}
// 差分を計算
var interval = 1 + ((dateTo - dateFrom).TotalDays * 5 - (dateFrom.DayOfWeek - dateTo.DayOfWeek) * 2) / 7;
if (dateTo.DayOfWeek == DayOfWeek.Saturday) interval--;
if (dateFrom.DayOfWeek == DayOfWeek.Sunday) interval--;
Console.WriteLine(“DateDiff(business date): {0} Days”, interval); // 営業日の差分
}
public static void Main(){
var day1 = new DateTime(2021, 3, 21);
var day2 = new DateTime(2021, 3, 25);
CalcBusinessDays(day1, day2); // DateDiff(business date): 4 Days
var day3 = new DateTime(2021, 3, 1);
var day4 = new DateTime(2021, 3, 31);
CalcBusinessDays(day3, day4); // DateDiff(business date): 23 Days
}
}
|
実行結果は以下のようになります。
1
2
|
DateDiff(business date): 4 Days
DateDiff(business date): 23 Days
|
このようにC#では、営業日の差分を算出できます。
- SE
- DateTimeクラス・TimeSpanクラスを使って年・月・日・時間・分・秒・ミリ秒の差分を求める方法、よく分かりました。
- PM
- 営業日の差分を求める方法についてもご紹介した方法を参考にしてください。
まとめ
いかがでしたでしょうか。C#での日付差分(DateDiff)を求める方法について説明しました。DateTimeクラス・TimeSpanクラスを利用して、年・月・日・時間・分・秒・ミリ秒の差分を求められます。応用編として、営業日の差分を求める方法についても紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)