2016-09-09 4 views
0

Я хотел дата конвертировать строку ISODate этот node-dateformat модуль, но я имею ошибку:DateFormat преобразования строки даты в ISODate

TypeError: Invalid date

Мой код:

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

Любая идея об этой проблеме?

Спасибо :)

+0

Что значит 'juillet'? – abdulbarik

+0

извините, это июль на французском языке. Возможно, это потому, что на французском языке у меня эта ошибка? –

+0

Итак, вы хотите конвертировать в 'французский'? – abdulbarik

ответ

1

Это i18n на основе дата выдачи разборе. node-dateformat (и, в конечном счете, синтаксический анализ javascript, на котором он опирается, за кадром) не может обрабатывать французские месяцы. Для этого попробуйте:

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

Это будет работать правильно. Если вы хотите разбирать французские даты, я бы рекомендовал использовать удивительную библиотеку времени/времени moment. 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')); 
+0

Спасибо, hwillson! –

Смежные вопросы