[英]Cannot set wxDateTime day, month and year
我正在尝试一个非常简单的“许可证到期检查”代码。 但是,尽管我将月份设置为6月,但以下情况总是使我处于第一个条件,即过期。 我似乎无法弄清楚问题出在哪里。 我真的很感谢您的帮助。
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"));
调用wxDateTime::SetMonth(wxDateTime::Jun)
将使对象在其当前日期为31(例如,在1月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()
。 强烈建议您使用它们,这在开发过程中非常有帮助,并且在使用wxWidgets API时会遇到很多错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.