dateformat 将日期字符串转换为 isoDate

dateformat convert date string to isoDate

我想将日期字符串转换为 isoDate 这个 node-dateformat 模块,但我有错误:

TypeError: Invalid date

我的代码:

let postProperties = {
  dateCreated: dateFormat('4 juillet 1991', 'yyyy-mm-dd')
};

知道这个问题吗?

谢谢:)

这是一个基于 i18n 的日期解析问题。 node-dateformat(最终是它在幕后所依赖的核心 javascript 日期解析)无法处理法语月份。要验证这一点,请尝试:

dateFormat('4 july 1991', 'yyyy-mm-dd')

这将正常工作。如果您想解析法语日期,我建议您使用适用于您的语言的很棒的 date/time 库 moment. Moment has full i18n support. You just have to add a custom locale bundle,这样就大功告成了。这是一个简单的示例,展示了它如何与法语语言环境包一起使用:

import moment from 'moment';

// A French locale bundle; call this once in your code somewhere
moment.locale('fr', {
  months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
  monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
  weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
  weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
  weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
  longDateFormat : {
    LT : "HH:mm",
    LTS : "HH:mm:ss",
    L : "DD/MM/YYYY",
    LL : "D MMMM YYYY",
    LLL : "D MMMM YYYY LT",
    LLLL : "dddd D MMMM YYYY LT"
  },
  calendar : {
    sameDay: "[Aujourd'hui à] LT",
    nextDay: '[Demain à] LT',
    nextWeek: 'dddd [à] LT',
    lastDay: '[Hier à] LT',
    lastWeek: 'dddd [dernier à] LT',
    sameElse: 'L'
  },
  relativeTime : {
    future : "dans %s",
    past : "il y a %s",
    s : "quelques secondes",
    m : "une minute",
    mm : "%d minutes",
    h : "une heure",
    hh : "%d heures",
    d : "un jour",
    dd : "%d jours",
    M : "un mois",
    MM : "%d mois",
    y : "une année",
    yy : "%d années"
  },
  ordinalParse : /\d{1,2}(er|ème)/,
  ordinal : function (number) {
    return number + (number === 1 ? 'er' : 'ème');
  },
  meridiemParse: /PD|MD/,
  isPM: function (input) {
    return input.charAt(0) === 'M';
  },
  meridiem : function (hours, minutes, isLower) {
    return hours < 12 ? 'PD' : 'MD';
  },
  week : {
    dow : 1,
    doy : 4
  }
});

// Create a new moment instance, parsing your French date
const date = moment('4 juillet 1991', 'D MMMM YYYY')    

// Will output "1991-07-04"
console.log(date.format('YYYY-MM-DD'));