如何在ExtJS中将日期转换为DatePicker的取值格式?
解决方案
要实现将"22.11.2022 00:00:00"转换为指定格式并设置到ExtJS日期选择器中,按以下步骤处理:
1. 解析原始日期字符串为Date对象
原始日期格式为dd.MM.yyyy HH:mm:ss,必须用Ext.Date.parse明确指定格式解析,避免浏览器兼容性问题:
// 假设this.jsonData.dateData就是目标原始日期字符串 var rawDate = this.jsonData.dateData; // 按「日.月.年 时分秒」格式解析为标准Date对象 var dateObj = Ext.Date.parse(rawDate, 'd.m.Y H:i:s');
2. 设置到选择器并配置显示格式
ExtJS日期选择器通常接受Date对象作为值,若要显示为Mon Nov 21 2022 00:00:00 GMT+0300 (GMT+03:00)格式,需配合配置选择器的format属性:
方式一:直接设置Date对象(推荐)
选择器会根据配置的格式自动渲染显示,同时保留Date对象作为内部值:
// 配置选择器的显示格式,匹配目标样式 view.picker.setConfig('format', 'D M j Y H:i:s \\G\\M\\T\\Z (\\G\\M\\T\\:Z)'); // 将解析后的Date对象设置为选择器值 view.picker.setValue(dateObj);
方式二:格式化为目标字符串(若选择器支持字符串值)
如果必须设置格式化后的字符串,先将Date对象转换为目标格式再赋值:
// 将Date对象格式化为你需要的字符串格式 var formattedDate = Ext.Date.format(dateObj, 'D M j Y H:i:s \\G\\M\\T\\Z (\\G\\M\\T\\:Z)'); // 设置到选择器 view.picker.setValue(formattedDate);
关键说明
- 你之前使用的
'l, \t\he jS \of F Y h:i:s A'格式串与目标样式不匹配,因此无效。需替换为对应占位符:D:星期缩写(如Mon)M:月份缩写(如Nov)j:不带前导零的日期(如21)Y:四位年份H:i:s:24小时制时分秒Z:时区偏移(如+0300)
- 对于
GMT这类固定文本,需用转义符\\处理,避免被识别为格式占位符。
内容的提问来源于stack exchange,提问作者wonka
相关产品推荐
相关产品推荐

