C#で昨日と明日の日時を取得する方法


100

私はコードをもっている:

int MonthNow = System.DateTime.Now.Month;
int YearNow = System.DateTime.Now.Year;
int DayNow = System.DateTime.Now.Day;

C#で昨日と明日、月、年を取得するにはどうすればよいですか?

もちろん、私はただ書くことができます:

DayTommorow = DayNow +1;

しかし、明日が別の月または年になる場合もあります。昨日と今日を知るためのC#の組み込みツールはありますか?


DayNow + 1またはの問題- 1は、それが月の最終日の最初の場合、これが機能しないことです。DateTime.Now.Dayは、当日の整数表現です。
Gary.S、2011年

回答:


125

この情報はAPIリファレンスにあります

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);

28
可能であれば、ウェブサイトにリンクするだけでなく、リンクされたウェブサイトの関連部分を投稿してください
JMax

JMax、確かに。リンクは、日付の追加/減算を可能にするDateTime.AddDaysメソッド用です。これは、より一般的なDateTime.Addメソッドと比較して、質問のコンテキストで使用する方が簡単です。
Tabrez

5
...そしてそれはあなたの答えの詳細な部分かもしれません:)
C4d 2015年



16

昨日と明日の00:00:00に取得したい場合は、次のようにしてください。

DateTime yesterday = DateTime.Today.AddDays(-1);
DateTime tomorrow = DateTime.Today.AddDays(1); // Output example: 6. 02. 2016 00:00:00

このようにすると、次のようになることに注意してください。

DateTime yesterday = DateTime.Now.AddDays(-1);
DateTime tomorrow = DateTime.Now.AddDays(1); // Output example: 6. 02. 2016 18:09:23

すると、昨日の00:00:00時刻ではなく、現在の時刻から1日を引いた時刻になります。




2

コツは、「DateTime」を使用して日付を操作することです。日付からの「最終結果」が必要な場合にのみ、整数と文字列を使用してください。

例(疑似コード):

  1. 「明日の日時=今+ 1」を取得

  2. 結果の日付の日付、曜日、月の日付を決定します。


1

昨日UTCで「ローカル」を取得する。

  var now = DateTime.Now;
  var yesterday = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Utc).AddDays(-1);

0

特に日付がWeb API経由で送信される場合は、結果に不要なタイムゾーンを追加しないように注意してください。代わりにUtcNowを使用して、タイムゾーンなしにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.