用moment.js用法语排序日期/时间

时间:2015-11-09 18:31:33

标签: jquery datatables momentjs

所以我当前的问题是,我需要能够排序是否包含时间和如果没有。如果不包括分钟,则排序将中断。我还没弄明白如何在日期或没有会议记录的情况下让它工作。是否可以关闭“严格”'解析? THX

$(document).ready(function(){

 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';
        },
        // in case the meridiem units are not separated around 12, then implement
        // this function (look at locale/id.js for an example)
        // meridiemHour : function (hour, meridiem) {
        //     return /* 0-23 hour, given meridiem token and hour 1-12 */
        // },
        meridiem : function (hours, minutes, isLower) {
            return hours < 12 ? 'PD' : 'MD';
        },
        week : {
            dow : 1, // Monday is the first day of the week.
            doy : 4  // The week that contains Jan 4th is the first week of the year.
        }
    });

moment.locale('fr');


    // attaches the moment plugin for datatables

//This will work if minutes are included on all dates
   $.fn.dataTable.moment("dddd, D MMMM [à] H:mm [h]", 'fr');// dimanche, 15 juillet 11:01


$('#sort').dataTable( {
    "paging": false,
    "info": false,   

} );

});

1 个答案:

答案 0 :(得分:1)

您不应该根据格式化的输出字符串进行排序,而应该基于Date包装的基础moment对象,或通过moment公开的方法对您进行排序友好价值或进行日期比较。一些选项包括:

// working with underlying values
var momentObj = moment(/* some parameter value */); // instantiate object by whatever means you like
var msUnix = momentObj.valueOf(); // millisecond offset from start of Unix epoch
var unix = momentObj.unix(); // second offset from start of Unix epoch

// working with comparisons
if(momentObj.isBefore('2015-11-09')) { // do something };
if(momentObj.isSame('2015-11-09')) { // do something };
if(momentObj.isAfter('2015-11-09')) { // do something };
if(momentObj.isBetween('2015-11-09','2016-11-09')) { // do something };