現在の日付から前の日付を減算したい。以前の日付は2か月と15日または1年9か月と10日である可能性があります...このように...では、C#でコーディングを作成するにはどうすればよいですか。どうもありがとう。
6 に答える
1か月の長さは時間の経過とともに変化するため、を使用した回答では「2か月と15日」を指定することはできTimeSpan
ません。
基本クラスライブラリを使用してこれを行うのは面倒です...これが、私がNodaTimeプロジェクトを開始した理由の1つです。他の機能の中で、それはあなたがPeriod
日付の間(または日付と時刻など)を決定することを可能にします。
たとえば、私がStackOverflowを使用している期間を見てみましょう。
LocalDate today = new LocalDate(2013, 2, 8);
LocalDate start = new LocalDate(2008, 9, 26);
// This defaults to using year, month, day units. You can specify alternatives.
Period period = Period.Between(start, today);
Console.WriteLine("{0} years; {1} months; {2} days",
period.Years, period.Months, period.Days);
出力:
4 years; 4 months; 13 days
または、実際に日付からピリオドを減算したい場合(質問はあまり明確ではありません)、それも実行できます。
Period period = new PeriodBuilder { Years = 4, Months = 4, Days = 13 }.Build();
LocalDate today = new LocalDate(2013, 2, 8);
LocalDate start = today - period;
Console.WriteLine(start);
出力:
25 September 2008
日付/時刻の算術の性質がややクレイジーであるため、これでは9月26日にはなりません。9月26日に期間を追加すると、今日になります...しかし、それは同じことではありません。これを、達成したいことを説明することに本当に注意する必要があるという警告として扱ってください:)
ただし、この2番目の側面は、BCLを使用してかなり簡単に実行できます。
DateTime today = new DateTime(2013, 2, 8);
DateTime start = today.PlusYears(-4).PlusMonths(-4).PlusDays(-13);
ただし、その「年、月、日」の値を表すBCLタイプはありません。
あなたの質問は少し混乱しています。ある日付から別の日付を減算しますか、それとも日付から一定期間を減算しますか?
1. ある日付を別の日付から引きます。
DateTime previousDate = new DateTime(1990, 12, 12);
DateTime currentDate = DateTime.UtcNow;
TimeSpan difference = currentDate - previousDate;
その後、TimeSpan
メソッドを使用して、さまざまな時間単位での差を好きなように取得できます。
TimeSpan の詳細については、http://msdn.microsoft.com/en-us/library/system.timespan.aspx をご覧ください。
2. 日付から期間を引く
DateTime currentDate = DateTime.UtcNow;
TimeSpan periodOfTime = new TimeSpan(12, 12, 0, 0);
DateTime newDate = currentDate - periodOfTime;
ただし、それが必要な場合は、1 か月の長さを自分で計算する必要があります。
次のようにする必要があります。
TimeSpan diff = DateTime.Now - previousDate;
C# で 2 つの日付を減算すると、TimeSpan オブジェクトが得られます。さまざまなプロパティにアクセスして、実際の日、時間、分などを取得できます。
DateTime a;
DateTime b;
//assign some values
TimeSpan span = a.Subtract(b);
Console.WriteLine("Days: " + span.Days);
使用できますDateTime.Subtract
。
記事の例:
System.DateTime date1 = new System.DateTime(1996, 6, 3, 22, 15, 0);
System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2, 0);
System.DateTime date3 = new System.DateTime(1996, 10, 12, 8, 42, 0);
// diff1 gets 185 days, 14 hours, and 47 minutes.
System.TimeSpan diff1 = date2.Subtract(date1);
// date4 gets 4/9/1996 5:55:00 PM.
System.DateTime date4 = date3.Subtract(diff1);
// diff2 gets 55 days 4 hours and 20 minutes.
System.TimeSpan diff2 = date2 - date3;
// date5 gets 4/9/1996 5:55:00 PM.
System.DateTime date5 = date1 - diff2;
TimeSpan timeSpan = new TimeSpan(2,2,0);
DateTime dateTime = DateTime.Now.Subtract(timeSpan);