dateformat将日期字符串转换为isoDate

时间:2016-09-09 09:08:30

标签: node.js meteor date-format

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

  

TypeError:无效日期

我的代码:

pointer-events: none;

对这个问题有任何想法吗?

谢谢:)

1 个答案:

答案 0 :(得分:1)

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

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

这将正常工作。如果你想解析法语日期,我建议使用真棒日期/时间库moment。瞬间完全支持i18n。您只需为您的语言添加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'));