无法设置 wx日期时间日、月和年

Cannot set wxDateTime day, month and year

本文关键字:时间 设置 wx 日期      更新时间:2023-10-16

我正在尝试一个非常简单的"许可证到期检查"代码。但是,尽管我将月份设置为 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时捕获很多错误。