Flatpickr 和 Moment.js 意外的日期格式
Flatpickr and Moment.js unexpected date format
我正在为 Flatpickr 使用以下实例化代码。
$("#entry_date_time").flatpickr({
enableTime: true,
altInput: true,
defaultDate: moment().format("YYYY-MM-DD HH:MM:SS"),
dateFormat: "YYYY-MM-DD HH:MM:SS",
minuteIncrement: 1
});
我遇到的问题是 moment().format("YYYY-MM-DD HH:MM:SS");
给了我正确的数据,但 $("#entry_date_time").val()
的输出等于
2017201720172017-JanJan-SatSat 0000:JanJan:0000
而不是我提供的预期格式。
任何关于可能导致此问题的想法都很好,感谢您的帮助!
根据输出,并查看 date and time 的 flatpickr 文档,格式中似乎只需要单个字符而不是多个字符?例如,4 Y 表示年份重复 4 次,月份重复 2 次,等等。
您需要的日期格式可能应该是:
dateFormat: "Y-M-D H:i"
...但是,我没有看到 flatpickr 的秒部分的格式化选项?
秒更新:
Flatpickr 有自己的 formating tokens 与 moment 支持的不同。但好处是您可以使用 parseDate
和 formatDate
配置选项来支持自定义格式标记。
/* A custom datestring parser */
parseDate: (date: string, format: string) => Date;
/* Allows using a custom date formatting function instead of the built-in. Generally unnecessary. */
formatDate: (date: Date, format: string, locale: Locale) => string;
具有 moment.js 兼容令牌的示例
https://jsfiddle.net/armujahid/pwqhznj0/
const fp = flatpickr(".date", {
altInput: true,
dateFormat: "YYYY-MM-DD",
altFormat: "DD-MM-YYYY",
allowInput: true,
parseDate: (datestr, format) => {
return moment(datestr, format, true).toDate();
},
formatDate: (date, format, locale) => {
// locale can also be used
return moment(date).format(format);
}
});
参考:我的评论在https://github.com/flatpickr/flatpickr/issues/1549#issuecomment-537939826
更新:此代码段也已添加到 official docs
我正在为 Flatpickr 使用以下实例化代码。
$("#entry_date_time").flatpickr({
enableTime: true,
altInput: true,
defaultDate: moment().format("YYYY-MM-DD HH:MM:SS"),
dateFormat: "YYYY-MM-DD HH:MM:SS",
minuteIncrement: 1
});
我遇到的问题是 moment().format("YYYY-MM-DD HH:MM:SS");
给了我正确的数据,但 $("#entry_date_time").val()
的输出等于
2017201720172017-JanJan-SatSat 0000:JanJan:0000
而不是我提供的预期格式。
任何关于可能导致此问题的想法都很好,感谢您的帮助!
根据输出,并查看 date and time 的 flatpickr 文档,格式中似乎只需要单个字符而不是多个字符?例如,4 Y 表示年份重复 4 次,月份重复 2 次,等等。
您需要的日期格式可能应该是:
dateFormat: "Y-M-D H:i"
...但是,我没有看到 flatpickr 的秒部分的格式化选项?
秒更新:
Flatpickr 有自己的 formating tokens 与 moment 支持的不同。但好处是您可以使用 parseDate
和 formatDate
配置选项来支持自定义格式标记。
/* A custom datestring parser */
parseDate: (date: string, format: string) => Date;
/* Allows using a custom date formatting function instead of the built-in. Generally unnecessary. */
formatDate: (date: Date, format: string, locale: Locale) => string;
具有 moment.js 兼容令牌的示例 https://jsfiddle.net/armujahid/pwqhznj0/
const fp = flatpickr(".date", {
altInput: true,
dateFormat: "YYYY-MM-DD",
altFormat: "DD-MM-YYYY",
allowInput: true,
parseDate: (datestr, format) => {
return moment(datestr, format, true).toDate();
},
formatDate: (date, format, locale) => {
// locale can also be used
return moment(date).format(format);
}
});
参考:我的评论在https://github.com/flatpickr/flatpickr/issues/1549#issuecomment-537939826
更新:此代码段也已添加到 official docs