Flatpickr 和 Moment.js 意外的日期格式

Joe*_*tto 2 datetime timestamp date momentjs flatpickr

我正在使用以下 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
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是moment().format("YYYY-MM-DD HH:MM:SS");给了我正确的数据,但输出$("#entry_date_time").val()等于

2017201720172017-JanJan-SatSat 0000:JanJan:0000

而不是我提供的预期格式。

关于可能导致此问题的任何想法都很棒,感谢您的帮助!

Abd*_*auf 5

Flatpickr 有自己的格式化令牌,与 moment 支持的令牌不同。但好处是您可以使用parseDateformatDate配置选项来支持自定义格式标记。

/* 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;
Run Code Online (Sandbox Code Playgroud)

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);
  }
});
Run Code Online (Sandbox Code Playgroud)

参考:我的评论https://github.com/flatpickr/flatpickr/issues/1549#issuecomment-537939826

更新:此代码片段也已添加到官方文档中