无法设置 wx日期时间日、月和年
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时捕获很多错误。
相关文章:
- 以在Qt中的IF语句中设置时间延迟
- gRPC C++我设置截止时间时客户端阻止
- 如何使用跨平台代码在C++中设置系统时间?
- 如何在Arduino上将时间设置为中部时区?
- 如何使用Chrono或ctime libaray输入设置的开始和结束时间
- 如何使用 std::chrono 库设置特定时间?
- 在Qt中设置pixmap时的执行时间很奇怪
- 如何对 g++ 设置执行时间限制?
- 在 Omnet++ 中的模拟时间内更改/设置节点的新位置
- C :使用后缀设置时间
- 在编译时间检查模板参数类型是否设置或多键,并且容器的元素类型是算术的
- setSockopt在C 中不起作用(超时设置为1s,等待更长的时间)
- 如何在Qt中设置时间延迟以触发即将发生的事件
- 设置具有非constexpr函数的constexpr变量(但可以在编译时间计算)
- 从1970年1月1日起,C 设置了MS的Windows时间
- 用C++设置windows系统时间
- 如何在Visual Studio中设置C /C代码仅在一个线程中运行以测试运行时间
- 将NTP时间设置为特定的时区
- 当为不存在的日期/时间设置CreateWaitableTimer时会发生什么?
- 如何将数据时间设置为方法中的参数