我想将日期字符串转换为isoDate这个node-dateformat模块,但我错了:
TypeError:无效日期
我的代码:
pointer-events: none;
对这个问题有任何想法吗?
谢谢:)
答案 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'));