如何从Windows Forms的MonthCalendar控件获取整数类型日、月、年值?
实现方案
不需要对日期字符串做手动切割拆分,基于.NET的DateTime类型处理是最稳定的,不会因为系统区域日期格式差异导致取值错误,有两种实现路径:
路径1:基于你已拿到的日期字符串转换提取
- 先通过
DateTime.TryParse把字符串格式的日期解析为DateTime结构体实例 - 直接从实例的内置属性取年、月、日的整数值
示例代码:
// 替换为你实际获取到的日期字符串变量 string dateStr = "你拿到的字符串格式日期"; if (DateTime.TryParse(dateStr, out DateTime selectedDate)) { // 三个独立整数变量 int year = selectedDate.Year; int month = selectedDate.Month; int day = selectedDate.Day; }
路径2:直接从控件取值(更推荐,跳过字符串转换步骤)
你已经把MaxSelectionCount设为1,此时控件的SelectionStart属性就是选中的日期,本身就是DateTime类型,不需要先转成字符串再解析,直接取值即可:
DateTime selectedDate = monthCalendar1.SelectionStart; int year = selectedDate.Year; int month = selectedDate.Month; int day = selectedDate.Day;
注意:不要用字符串截取、固定分隔符拆分的方式处理日期,不同设备的系统短日期格式可能为
yyyy/MM/dd、MM/dd/yyyy、dd.MM.yyyy等多种形式,硬编码拆分规则很容易出现年月日错位的问题。
内容的提问来源于stack exchange,提问作者Ruthenium
相关产品推荐
相关产品推荐

