gpt4 book ai didi

javascript - 如何使用 KnockoutJs Binding 在 moment.js 中将日期转换为其他格式?

转载 作者:行者123 更新时间:2023-11-30 16:41:47 24 4
gpt4 key购买 nike

在我的网络应用程序中,我使用 Bootstrap-datepicker-and-KnockoutJs Binding 来绑定(bind)日期,如何将日期转换为其他格式?

self.date = ko.observable(moment())
.extend({ required: true });

默认显示

Thu Aug 06 2015 11:59:21 GMT+0530

在日期选择器之后显示

Thu Aug 06 2015 05:30:00 GMT+0530 (India Standard Time)

试图将这个值转换成其他值

moment(self.date, '2015-08-06T011:32:21.196Z')

显示

Invalid date

下面我这里用knockout绑定(bind)展示

ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().datepickerOptions || {};
$(element).datepicker(options).on("changeDate", function (ev) {
var observable = valueAccessor();
observable(ev.date);
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).datepicker("setValue", value);
}
};

我该怎么做,这是正确的方法吗?建议一个解决方案,谢谢

最佳答案

这是 KnockoutJS 与 MomentJS 的自定义绑定(bind)实现

https://github.com/adrotec/knockout-date-bindings

另一种选择是定义 ko.computed(),它将使用时间戳作为因变量

var Vm = function() {
var self = this;

self.date = ko.observable();
self.dateFormatted = ko.computed(function() {
return moment(self.date()).format("DD/MM/YYYY HH:mm:ss")
});

setInterval(function() {
self.date(new Date());
}, 1000);
};

var vm = new Vm();
ko.applyBindings(vm, $("body")[0]);
<!DOCTYPE html>
<html>

<head>
<script data-require="jquery@2.1.3" data-semver="2.1.3" src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script data-require="knockout@3.3.0" data-semver="3.3.0" src="//cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
<script data-require="moment.js@2.10.2" data-semver="2.10.2" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>

<body>
<h1 data-bind="text: dateFormatted"></h1>
<script>
var Vm = function() {
var self = this;

self.date = ko.observable();
self.dateFormatted = ko.computed(function() {
return moment(self.date()).format("DD/MM/YYYY HH:mm:ss")
});

setInterval(function() {
self.date(new Date());
}, 1000);
};

var vm = new Vm();
ko.applyBindings(vm, $("body")[0]);
</script>
</body>

</html>

关于javascript - 如何使用 KnockoutJs Binding 在 moment.js 中将日期转换为其他格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31848703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com