У меня была такая же ошибка некоторое время в несколько ином сценарии. У меня было
<wpftoolkit:DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding Path=Accounts}" >
<wpftoolkit:DataGridTextColumn
Header="Account Name"
Binding="{Binding Path=AccountName}" />
</wpftoolkit:DataGrid>
, которое я зафиксировал как
<wpftoolkit:DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding Path=Accounts}" >
<wpftoolkit:DataGrid.Columns>
<wpftoolkit:DataGridTextColumn
Header="Account Name"
Binding="{Binding Path=AccountName}" />
</wpftoolkit:DataGrid.Columns>
</wpftoolkit:DataGrid>
Эта логика должна быть всем, что вам нужно: если завтра день 1, то сегодня последний день месяца, и если метод даты getHours
возвращает 20 или больше, вы должны были соответствовать вашим критериям.
const dt = new Date();
const tomorrow = new Date(dt.getTime() + 60 * 60 * 24 * 1000).getDate();
if (tomorrow === 1 && dt.getHours() >= 20) {
console.log('criteria met!');
} else {
console.log(dt, tomorrow);
}
Я вижу, что у вас есть переменная lastday, но я не могу понять, как вы ее используете. Вам нужно что-то проверить, чтобы узнать, является ли текущая дата 31-й.
Последний день месяца в 20:00 вечера совпадает с 1-м днем месяца -4 часа, который мы можем использовать для создания функции, чтобы проверить, не прошли ли мы эту дату:
[110 ]переменная now - это текущая дата и время, lastM4 - текущий год, текущий месяц + 1, следующий за месяцем, 1 - первый день месяца, а -4 - 4 часа в прошлое, которое является последним днем месяца в 20:00 вечера. Другим способом было бы использовать день как -1 и добавить установить час на 20.
В конструкторе Date, который вы указали выше, используйте 0, так как день дает вам последний день предыдущего месяца, поэтому просто добавьте 20 в конце конструктора для часов, и у вас есть время, чтобы проверить сейчас. ]