Невозможно установить день, месяц и год wxDateTime - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь очень простой код для "проверки срока действия лицензии".Однако следующий бит всегда приводит меня к первому условию, то есть к истечению срока, хотя я установил месяц на июнь.Я не могу понять, в чем проблема.Буду очень признателен за помощь.

LicDMY.LicDate = wxDateTime::Today(); 
LicDMY.TDay = wxDateTime::Today();
LicDMY.LicDate.SetYear(2019);
LicDMY.LicDate.SetMonth(wxDateTime::Jun);
LicDMY.LicDate.SetDay(30);
if(LicDMY.LicDate.IsEarlierThan(LicDMY.TDay)||LicDMY.LicDate.IsEqualTo(LicDMY.TDay))
    message = new wxStaticText(this, wxID_ANY, wxT("Expired! Renew License \n"));
else
    message = new wxStaticText(this, wxID_ANY, wxT("Welcome! \n"));

1 Ответ

0 голосов
/ 01 февраля 2019

Вызов wxDateTime::SetMonth(wxDateTime::Jun) сделает объект недействительным, когда его текущим днем ​​будет 31, как это происходит 31 января, когда был задан этот вопрос.Вы можете поменять порядок вызовов SetDay() и SetMonth(), чтобы выполнить эту работу, или, предпочтительно, просто использовать Set(30, wxDateTime::Jun, 2019), чтобы сразу изменить всю часть даты, или даже написать LicDate = wxDateTime(30, wxDateTime::Jun, 2019), что может быть более читабельным.

Наконец, похоже, что вы не используете средства отладки wxWidgets (т.е. компилируете свой код с определением NDEBUG), так как в противном случае вы были бы немедленно уведомлены о проблеме, потому что вы получили бы ошибку подтверждения с сообщением, говорящимэто assert "(0 < day) && (day <= GetNumberOfDays(month, year))" failed in Set(): Invalid date in wxDateTime::Set().Настоятельно рекомендуется использовать их, это очень полезно во время разработки и выловит много ошибок при использовании API wxWidgets.

...