как получить дату и время вчера и завтра в с #


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

Ответы:


128

Вы можете найти эту информацию прямо в справочнике по 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

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

11
Этот ответ доказывает, насколько важно именование.
eomeroff

17

Cегодня :

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.