C # определить, когда день меняется - PullRequest
0 голосов
/ 21 июня 2019

В моем приложении есть тикер, который запускается каждые 5 секунд.У меня также есть внутренние часы, и я хочу определить, когда день меняется.Чтобы проверить, я безуспешно попробовал следующий код:

DateTime A = new DateTime(2019, 6, 20, 23, 58, 29);       
DateTime B = new DateTime(2019, 6, 21, 00, 01, 12);
Int32 dd = (B-A).Days;          // it returns 0
double dd = (B-A).TotalDays;    // it return 0.00002136213 

Если я проверю, если TotalDays> 0 , то я успешно обнаружу смену дня, но в следующем случае (с разницей вминуту)

DateTime C = new DateTime(2019, 6, 20, 12, 58, 29);
DateTime D = new DateTime(2019, 6, 20, 12, 59, 29);

сравнение не удается.Поскольку мне нужно вызывать метод при смене дня, в приведенном выше примере он вызывается каждый раз, и я не хочу этого поведения.Любой намек?

Ответы [ 3 ]

2 голосов
/ 21 июня 2019

сравнить Date часть DateTime напрямую

bool isSameDay = (A.Date == B.Date);
1 голос
/ 21 июня 2019

Для вашего тикера, почему бы не использовать переменные TimeSpan для завершения сравнения.Вы устанавливаете 1 статическую переменную временного интервала в 24 часа (1 день), а затем создаете вторичную переменную для хранения значений.Затем вы устанавливаете вторую переменную временного интервала равной вычитанию двух дней, и это даст вам знать, если день прошел.

`

TimeSpan newDayReference = new TimeSpan(24,0,0);
TimeSpan comparison;

//These two variables set to show difference.
DateTime A= DateTime.Now.AddDays(-1);
DateTime B = DateTime.Now;
comparison = B - A;

if(comparison > newDayReference){ //success }

`

1 голос
/ 21 июня 2019

смотреть только на части даты

DateTime A = new DateTime(2019, 6, 20, 23, 58, 29);       
DateTime B = new DateTime(2019, 6, 21, 00, 01, 12);
Int32 dd = (B.Date-A.Date).Days;  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...