Microsoft 的DateTimePicker
通用控件根据配置的 Locale 设置显示ShortDate 。客户的计算机配置了 2 位数年份 ShortDateFormat ( d/M/yy
),因此 DateTimePicker 显示 2 位数年份:
当用户将焦点放在日期时间选择器的年份块中时,Microsoft 会指出问题,并显示完整的 4 位数年份:
但随后,想要输入1929
年份的用户键入了一个 2 位数的年份:
然后当他们标出时,当 Windows 将他们的 2 位数年份解释为介于1930
和之间时,他们会感到困惑2029
,并且假定为 2029:
客户制定了一项全球公司政策,该政策规定将 Windows 区域设置配置为 2 位数年份。
因此,作为一种解决方法,我需要使用方便的宏DateTimePicker
强制每个控件使用自定义日期格式:DateTime_SetFormat
DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");
这有帮助,所以现在DateTimePicker
now 总是显示 4 位数的年份:
问题是用户仍然可以输入“无效”的 2 位数年份:
根据规则,哪个 Windows 仍在解释为 2029:
我需要日期时间选择器来拒绝 2 位数的年份。
如果这不起作用,那么我将被迫用 3 个编辑框替换每个 DateTimePicker:
22 6 29
我可以将无效数字涂成红色,并指出用户输入的无效数据。
如何防止 DateTimePicker 接受 y2k 错误?