在淘汰赛中格式化日期

时间:2012-10-12 08:14:25

标签: jquery asp.net knockout.js

我在javascript中有当前日期,如下所示:

self.currentDate = ko.observable(new Date());

我想在yyyy-mm-dd中格式化日期并在Sammy内部使用,如下所示:

this.get('', function () { this.app.runRoute('get', '#'+self.currentDate()) });

有很多漫长的过程要做。但有没有办法轻松做到这一点。或者我可以在document.ready函数中使用它并在此处使用它。

2 个答案:

答案 0 :(得分:2)

看看datejs。

http://www.datejs.com/

这是一个Javascript日期库,它将处理您的格式转换。它扩展了toString方法,以便您可以完成以下内容: -

self.currentDate().toString('yyyy-M-d')

有几种与Knockout集成的选项,但上述内容将在返回yyyy-mm-dd格式时“正常工作”。

另一种仍在使用datejs的方法是将函数包装在ko.computed中: -

self.displayDate = ko.computed(function(){
   return self.currentDate().toString('yyyy-M-d');
});

如果您不想使用datejs,您可以自己滚动并将其包装在计算中。

self.displayDate = ko.computed(function(){
   var year = self.currentDate().getFullYear().toString();
   var month = (self.currentDate().getMonth() + 1).toString();
   var day   = self.currentDate().getDay().toString();
   var pad = "00";

   return year + '-' +
     pad.substring(0, pad.length, month.length ) + month + '-' +
     pad.substring(0, pad.length, day.length ) + day;

});

但严重的是,先看看datejs。为什么重新发明轮子。在Sammy部分真的无法帮助你,soz。

答案 1 :(得分:0)

另一个选择是创建自定义绑定处理程序

更多信息:http://jason-mitchell.com/web-development/binding-dates-using-knockout-moment-js/

ko.bindingHandlers.date = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
    var value = valueAccessor();
    var allBindings = allBindingsAccessor();
    var valueUnwrapped = ko.utils.unwrapObservable(value);

    // Date formats: http://momentjs.com/docs/#/displaying/format/
    var pattern = allBindings.format || 'DD/MM/YYYY';

    var output = "-";
    if (valueUnwrapped !== null && valueUnwrapped !== undefined && valueUnwrapped.length > 0) {
        output = moment(valueUnwrapped).format(pattern);
    }

    if ($(element).is("input") === true) {
        $(element).val(output);
    } else {
        $(element).text(output);
    }
}
};


<div>
    <label>Date of Birth:</label>
    <input type="text" data-bind="date: dateOfBirth, format: 'DD MMM YYYY'" />
</div>

需要moment.js:http://momentjs.com/