Datatables / MomentJS - 在区域设置更改时更改日期格式

时间:2017-05-04 11:59:58

标签: angularjs datatables momentjs

我正在尝试在Datatable列中显示格式正确的日期。我正在使用MomentJS来正确检测和格式化单元格,因为它来自数据库中的yyyyMMdd(即20051201)字符串:

columns: [
    {
        data: "fechaPago", 
        "render": function(data){
            return (moment(data).isValid()) ? moment(data).format("DD/MM/YYYY") : "-";
        }
    },
]

完全符合预期:

enter image description here

现在,我正在努力实现更灵活的方法,并让当前的语言环境决定格式。我们的网络应用程序中有3种可用语言,我希望数据表检测当前语言并更改格式(从dd/MM/yyyyMM/dd/yyyy,如果是英文的话)。

我曾尝试使用'LLLL'作为格式,但它会使用字母返回整个日期,而我无法弄清楚如何修改它。

1 个答案:

答案 0 :(得分:1)

您可以使用时刻locale(String)功能设置当前功能区域设置,或moment.locale(String)设置全局时刻区域设置。

要在format()中使用L令牌,请获取本地化的日,月和年。

您的代码如下:

columns: [
  {
    data: "fechaPago",
    "render": function(data){
      var locale = // get current locale code
      return (moment(data).isValid()) ? moment(data).locale(locale).format("L") : "-";
    }
  },
]

请记住使用moment-with-locales.js(或导入所需的区域设置)。