Jquery 在Knockout.JS中的日期-时间-日期?
当我从文本框将日期保存到数据库时,它将另存为日期时间,即 2014-06-03T00:00:00 因此,问题来了,我希望这件事被缩短,并在我加载的文本框中只显示日期部分,即2014-06-03 我尝试了另一种方法,将模型属性声明为字符串,而不是像datetime那样Jquery 在Knockout.JS中的日期-时间-日期?,jquery,date,datetime,knockout.js,Jquery,Date,Datetime,Knockout.js,当我从文本框将日期保存到数据库时,它将另存为日期时间,即 2014-06-03T00:00:00 因此,问题来了,我希望这件事被缩短,并在我加载的文本框中只显示日期部分,即2014-06-03 我尝试了另一种方法,将模型属性声明为字符串,而不是像datetime那样 public string CompletionDate {get;set;} 在我的控制器中,保存/显示和加载时都是am转换和保存/显示 convert.ToDateTime(“2014-06-03”).tostring(“dd
public string CompletionDate {get;set;}
在我的控制器中,保存/显示和加载时都是am转换和保存/显示
convert.ToDateTime(“2014-06-03”).tostring(“dd/MM/yyyy”)代码>//这有时有效,有时无效,即我遇到转换问题。我可以冒险,但我不能依赖这个。因此,我正在寻找完全不同的可行方法
我的cshtml:
<input type="text" data-bind="value:$data.CompletionDate />
使用moment.js只需返回它是一个日期时间,然后像这样应用它:
<input type="text" data-bind="value: moment($data.CompletionDate).format('YYYY-MM-DD')" />
编辑
<>观察你想要一个只敲除的方法,考虑如下:
<input type="text" data-bind="datetime: $data.CompletionDate, pattern: 'yyyy-mm-dd'" />
//paste this gist somewhere prior (forgot i had the toStringFormat extension: https://gist.github.com/wbennett/707f9def34513ba7a31a)
//but its the same idea
<script>
ko.bindingHandlers.datetime = {
update: function(el, value, bindings, model) {
var unwrapped = ko.utils.unwrapObservable(value());
var pattern = bindings.pattern || 'yyyy-mm-dd';
$(el).text(unwrapped.toStringFormat(pattern));
}
}
</script>
//将此要点粘贴到之前的某个位置(忘记我有ToString格式扩展名:https://gist.github.com/wbennett/707f9def34513ba7a31a)
//但这是同样的想法
ko.bindingHandlers.datetime={
更新:函数(el、值、绑定、模型){
var unwrapped=ko.utils.unwrappbservable(value());
var pattern=bindings.pattern | |'yyyy-mm-dd';
$(el).text(展开的.toString格式(模式));
}
}
(摘自knockoutjs.com)
使用moment.js只需返回DateTime,并按如下方式应用它:
<input type="text" data-bind="value: moment($data.CompletionDate).format('YYYY-MM-DD')" />
编辑
<>观察你想要一个只敲除的方法,考虑如下:
<input type="text" data-bind="datetime: $data.CompletionDate, pattern: 'yyyy-mm-dd'" />
//paste this gist somewhere prior (forgot i had the toStringFormat extension: https://gist.github.com/wbennett/707f9def34513ba7a31a)
//but its the same idea
<script>
ko.bindingHandlers.datetime = {
update: function(el, value, bindings, model) {
var unwrapped = ko.utils.unwrapObservable(value());
var pattern = bindings.pattern || 'yyyy-mm-dd';
$(el).text(unwrapped.toStringFormat(pattern));
}
}
</script>
//将此要点粘贴到之前的某个位置(忘记我有ToString格式扩展名:https://gist.github.com/wbennett/707f9def34513ba7a31a)
//但这是同样的想法
ko.bindingHandlers.datetime={
更新:函数(el、值、绑定、模型){
var unwrapped=ko.utils.unwrappbservable(value());
var pattern=bindings.pattern | |'yyyy-mm-dd';
$(el).text(展开的.toString格式(模式));
}
}
(摘自knockoutjs.com)
您可以编写自定义函数,将日期转换为所需格式
function formatDate(date) {
var d = new Date(date || Date.now()),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month,day ].join('-');
}
console.log(formatDate('2014-06-03T00:00:00'));
函数格式日期(日期){
var d=新日期(日期| | Date.now()),
月份=“”+(d.getMonth()+1),
日期=“”+d.getDate(),
year=d.getFullYear();
如果(月长<2)月='0'+月;
如果(日长<2)天='0'+天;
返回[年、月、日]。加入('-');
}
控制台日志(格式日期('2014-06-03T00:00:00');
这个函数可以在绑定内部直接调用
<input type="text" data-bind="value:formatDate($data.CompletionDate())" />
定制绑定
ko.bindingHandlers.datetime = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = valueAccessor();
var newValueAccessor = ko.utils.unwrapObservable(value);
var d = new Date(newValueAccessor);
if (newValueAccessor != null) {
var month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
$(element).text([year, month, day].join('-'));
}else{
console.log("invalid date format");
}
}
};
ko.bindingHandlers.datetime={
更新:函数(元素、valueAccessor、allBindingsAccessor、viewModel、bindingContext){
var value=valueAccessor();
var newValueAccessor=ko.utils.unwrapobbservable(值);
var d=新日期(newValueAccessor);
if(newValueAccessor!=null){
变量月份=“”+(d.getMonth()+1),
日期=“”+d.getDate(),
year=d.getFullYear();
如果(月长<2)月='0'+月;
如果(日长<2)天='0'+天;
$(元素).text([年、月、日].join('-');
}否则{
console.log(“无效日期格式”);
}
}
};
您可以编写自定义函数将日期转换为所需格式
function formatDate(date) {
var d = new Date(date || Date.now()),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month,day ].join('-');
}
console.log(formatDate('2014-06-03T00:00:00'));
函数格式日期(日期){
var d=新日期(日期| | Date.now()),
月份=“”+(d.getMonth()+1),
日期=“”+d.getDate(),
year=d.getFullYear();
如果(月长<2)月='0'+月;
如果(日长<2)天='0'+天;
返回[年、月、日]。加入('-');
}
控制台日志(格式日期('2014-06-03T00:00:00');
这个函数可以在绑定内部直接调用
<input type="text" data-bind="value:formatDate($data.CompletionDate())" />
定制绑定
ko.bindingHandlers.datetime = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = valueAccessor();
var newValueAccessor = ko.utils.unwrapObservable(value);
var d = new Date(newValueAccessor);
if (newValueAccessor != null) {
var month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
$(element).text([year, month, day].join('-'));
}else{
console.log("invalid date format");
}
}
};
ko.bindingHandlers.datetime={
更新:函数(元素、valueAccessor、allBindingsAccessor、viewModel、bindingContext){
var value=valueAccessor();
var newValueAccessor=ko.utils.unwrapobbservable(值);
var d=新日期(newValueAccessor);
if(newValueAccessor!=null){
变量月份=“”+(d.getMonth()+1),
日期=“”+d.getDate(),
year=d.getFullYear();
如果(月长<2)月='0'+月;
如果(日长<2)天='0'+天;
$(元素).text([年、月、日].join('-');
}否则{
console.log(“无效日期格式”);
}
}
};
我遇到了类似的问题,并使用此自定义绑定设置显示日期的格式:
ko.bindingHandlers.formatDate = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = valueAccessor();
var newValueAccessor = ko.unwrap(value);
var dt = new Date(newValueAccessor);
if (newValueAccessor != null)
$(element).text(dt.toLocaleDateString());
}
};
要将其与cshtml一起使用,只需在绑定时指定自定义绑定的名称
不要执行常规文本绑定:
<div data-bind="text: yourDate"></div>
我也有类似的问题,并使用此自定义绑定设置显示日期的格式:
ko.bindingHandlers.formatDate = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = valueAccessor();
var newValueAccessor = ko.unwrap(value);
var dt = new Date(newValueAccessor);
if (newValueAccessor != null)
$(element).text(dt.toLocaleDateString());
}
};
要将其与cshtml一起使用,只需在绑定时指定自定义绑定的名称
不要执行常规文本绑定:
<div data-bind="text: yourDate"></div>
尝试使用moment.js进行日期转换。是的,我以前看过。我不能只用一个js文件进行简单的转换。看看knockoutjs里面有什么很酷的东西:)试试moment.js,看看日期转换。是的,我以前看过。我不能只用一个js文件进行简单的转换。在knockoutjs:)内看起来很酷消息:ReferenceError:“formatDate”未定义<代码>self.myDate=ko.observable(新日期())
我需要传递$data.CompletionDate.来代替它。。这会引发一个错误。如果CompletionDate是可观察的,那么像这样使用绑定,否则请删除CompletionDate的括号。任何formatDate都是未定义的,因为在数据绑定的函数调用自定义绑定中,我们需要编写一些使用函数代码的逻辑:)查看它。欢迎留言:ReferenceError:“formatDate”未定义<代码>self.myDate=ko.observable(新日期())代码>代替了那个i