【问题标题】:Month-year to dd/mm/yyyy convertion issue?月-年到 dd/mm/yyyy 转换问题?
【发布时间】:2014-08-25 18:23:02
【问题描述】:

当我从我的日期选择器中选择一个日期时,我让它以月年格式显示,看起来像 july 2014

好吧,我必须将此格式转换为 dd/mm/yyyy 或其他格式,但是当我传入 new Date() 时,它应该是有效的。

我用于获取月份年份的日期选择器绑定代码

ko.bindingHandlers.enddate = {

        init: function (element, valueAccessor) {
            var value = ko.utils.unwrapObservable(valueAccessor());

            if (value && typeof value === 'object') {
                $(element).datepicker(value);
            }
            else {
                $(element).datepicker({
                    changeMonth: true,
                    changeYear: true,
                    dateFormat: 'MM yy',

                    onClose: function (dateText, inst) {

                        var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                        var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                        $(this).datepicker('setDate', new Date(year, month, 1));
                    }

                })
            }
        }
    };

让我证明我在这里所做的事情是正确的。我需要日期应该是Date() 可以理解的格式,因为当我从自定义的 Datepicker 中选择时,我会传递我选择的日期(这将是可观察的)。

Senario 1: var dateformat= new Date("dd/mm/yyy") --> 可以正常工作

Senario 2: var dateformat= new Date("july 2014") --> 日期无效,所以我打算转换为 dd/mm/yyyy 并做进一步的处理

【问题讨论】:

  • 使用 new Date("1 " + month + " " + year) 将您的月/年字符串转换为 JS 日期对象
  • 甚至new Date(month + " 1 " + year)
  • 如果我有july 2014 作为我的输入,那么如何动态分隔月份和年份?

标签: jquery knockout.js datepicker


【解决方案1】:

您可以使用 momentjs 来处理日期。它令人惊叹的图书馆可以处理日期。

你可以像下面这样使用

var myDate = moment($(element).datepicker('getDate')).format('DD/MM/YYYY')

Check this out.

in viewmodel you can do something like : 

self.formattedStartDate = ko.computed(function(){
 return moment(self.startdate()).format('MM/DD/YYYY);
)

});

现在使用 formattedStartDate 进行数据绑定或更简单的是:

self.startdate( moment(self.startdate()).format('MM/DD/YYYY') )

【讨论】:

  • 好吧,我在我的视图 (cshtml) 中尝试了日期格式,但是否可以在不使用数据绑定的情况下使用 moment.js ?
  • 在上述场景中,您有类似 $(element).datepicker('getDate') 的内容,但我需要格式化存储在 observable 中的日期,即 self.startdate() --> 持有我的 2014 年 7 月。
  • 是的,在您的模型中使用计算成员是可能的。我将为此编辑我的答案,标记为答案,或者如果它适合你,请投票。
  • 但是如果你已经在 self.startdate() 中有它,我看不出为什么你不能在数据绑定中使用它?
  • 看起来很酷,让我在一些小提琴中测试它并让你知道。干杯队友
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2013-08-31
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多