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

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.

Джо Смо
источник
14

Используйте DateTime.AddDays()( метод DateTime.AddDays документации MSDN ).

DateTime tomorrow = DateTime.Now.AddDays(1);
DateTime yesterday = DateTime.Now.AddDays(-1);
Новаков
источник
4
Ваш вчерашний день - «24 часа назад». Используйте DateTime.Today, чтобы отменить день стандартным способом.
Хенк Холтерман
2

Уловка состоит в том, чтобы использовать DateTime для управления датами; Используйте целые числа и строки только тогда, когда вам нужен «окончательный результат» от даты.

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

  1. Получите «DateTime завтра = сейчас + 1»

  2. Определите дату, день недели, день месяца - как хотите - полученной даты.

paulsm4
источник
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, чтобы не было часового пояса.

Мартин Дай
источник