繁体   English   中英

无法设置wxDateTime日,月和年

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM