як отримати вчора та завтра дату в c #


101

У мене є код:

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

Відповіді:


126

Ви можете знайти цю інформацію прямо у довідці API .

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

28
Будь ласка, опублікуйте, якщо можливо, відповідну частину пов’язаного веб-сайту, а не лише посилання на веб-сайт
JMax

JMax, звичайно. Посилання призначене для DateTime.AddDays метод, який дозволяє додавати / віднімати дні. Це простіше використовувати у контексті питання, порівняно з більш загальним методом DateTime.Add.
Тебрез

5
... і це може бути детальною частиною вашої відповіді :).
C4d


17

Сьогодні:

DateTime.Today

Завтра:

DateTime.Today.AddDays(1)

Вчора:

DateTime.Today.AddDays(-1)

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.




2

Хитрість полягає у використанні "DateTime" для маніпулювання датами; використовувати цілі числа та рядки лише тоді, коли вам потрібен "кінцевий результат" з дати.

Наприклад (псевдокод):

  1. Отримайте "DateTime завтра = зараз + 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

Остерігайтеся додавати небажаний часовий пояс до результатів, особливо якщо дата буде надсилатися через веб-API. Використовуйте UtcNow замість цього, щоб зменшити часовий пояс.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.