Knockout Daterangepicker正确格式化日期

时间:2016-09-24 17:53:01

标签: knockout.js momentjs daterangepicker

我尝试使用datepicker:https://sensortower.github.io/daterangepicker来获得淘汰赛的日期选择器。

一切都好,但我也希望选择器本身的自定义日期字段为" DD-MM-YYY" (而不是目前" DD / MM / YYYY"

我的模板定义是:

<input type="text" readonly class="form-control" 
  data-bind=" daterangepicker: dateRange,
              daterangepickerOptions: { 
                maxDate: [moment().add(20,'years')],                                  
                ranges: {
                  'Komende maand': [moment(), moment().add(1,'month')],
                  'Komende week': [moment(), moment().add(1,'week')],
                  'Altijd': 'all-time',
                  'Aangepast:': 'custom'
                },
                periods: ['day'],
                locale: 'nl',
                timeZone: null
              },
              daterangepickerFormat: 'DD-MM-YYYY'," />

因此在选择器本身中它会显示要更改的当前日期,但这些日期仍在&#34; en&#34;格式。

enter image description here

1 个答案:

答案 0 :(得分:2)

您确定支持nl区域设置标记吗?将其替换为:

locale: { inputFormat: 'DD-MM-YYYY' },

并且标签发生变化。

说明:

我试图找出哪个库的源代码呈现了您想要更改的标签。结果发现有一个名为inputFormat的设置,应该存储在locale对象中。

以下是默认设置应用于此对象的方式:

Config.prototype._locale = function(val) {
  return $.extend({
    applyButtonTitle: 'Apply',
    cancelButtonTitle: 'Cancel',
    inputFormat: 'L',
    startLabel: 'Sart',
    endLabel: 'End'
  }, val || {});
};

您会看到"L"值被用作默认格式,从而产生DD/MM/YYYY字符串。使用字符串(模板中的"nl")扩展对象对我来说没有多大意义,所以我的猜测是你必须创建自己的设置对象。您可以从moment.js的语言环境设置计算它。

(我在其中汇总了一个文件,其中包含您正在使用的所有库,并显示我的提案有效:this answer