2

我正在为 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

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

关于可能导致这种情况的任何想法都会很棒,感谢您的帮助!

4

2 回答 2

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;

与 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的评论

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

于 2019-10-07T11:00:52.667 回答
1

根据输出,并查看 flatpickr 文档的datetime,似乎格式中只需要单个字符而不是多个 ? 例如,4 Y 将解释年份重复 4 次、月份重复 2 次等。

您需要的 dateFormat 可能应该是:

dateFormat: "Y-M-D H:i"

...但是,我没有看到 flatpickr 秒部分的格式化选项?

更新秒数

有一个flatpickr 功能请求秒功能。

于 2017-05-14T18:58:56.790 回答