0

В своей программе я получаю дату через DateTime.Today/DateTime.Now, но если программа висит без перезапуска больше суток, то у нее не меняется число дня. То есть если в момент запуска было 01.11.2022, то через сутки почему-то остается так же.

Мне нужно самому отслеживать время когда день закончился и добавлять или как?

Мой код:

public static string todayDate = $"{DateTime.Now.Day}.{DateTime.Now.Month}.{DateTime.Now.Year}";

Я конечно понимаю что правильно будет через DateOnly получать. Но вот просто вот так получаю дату, И например по команде /start в боте мне выводится дата. Каждый день по идее должна быть разная дата.

Kromster
  • 13,809
  • https://ru.stackoverflow.com/q/1257309/373567 – aepot Nov 03 '22 at 12:36
  • https://ru.stackoverflow.com/q/1275282/373567 – aepot Nov 03 '22 at 12:37
  • И нельзя текущую дату/время несколько раз подряд запрашивать. – Qwertiy Nov 03 '22 at 12:47
  • @Qwertiy ну почему же, операционка стерпит, но это конечно же неэффективно – aepot Nov 03 '22 at 12:48
  • @aepot, потому что, например, когда она изменится, у тебя будет год и месяц вчерашние, а число - сегодняшнее. – Qwertiy Nov 03 '22 at 12:49
  • А где вы отображаете эту дату или как используете? Какой тип приложения? – aepot Nov 03 '22 at 12:51
  • Можно таймер завести, который в полночь будет менять значение. – Alexander Petrov Nov 03 '22 at 13:32
  • Нашел четкое решение через System.Management https://stackoverflow.com/a/295252/12888024 если будет непонятно, оформлю ответом. – aepot Nov 03 '22 at 18:42

1 Answers1

2

Судя по коду, вы инициализируете строку при старте приложения, после чего её содержимое не меняется. Вместо этого вам нужно в явном виде запрашивать DateTime.Now каждый раз.

Можно сделать чуть проще, чем в вашем коде, используя выражение DateTime.Now.ToString("dd.MM.yyyy"). Но не сохраняйте его в переменной, а каждый раз обращайтесь к этому выражению, тогда дата будет всегда актуальная.

  • Я пробовал, до перезапуска приложения дата не меняется. – Артём Дадашьянц Nov 03 '22 at 15:49
  • 2
    @АртёмДадашьянц так сделайте цикл, который будет ее обновлять раз в минуту или даже раз в секунду. Я бы дал ответ, но вы ни в какую не показываете код и не объясняете, где она не обновляется, как вы туда ее записываете и зачем она нужна. – aepot Nov 03 '22 at 18:36