Jquery 在Knockout.JS中的日期-时间-日期?

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

当我从文本框将日期保存到数据库时,它将另存为日期时间,即 2014-06-03T00:00:00

因此,问题来了,我希望这件事被缩短,并在我加载的文本框中只显示日期部分,即2014-06-03

我尝试了另一种方法,将模型属性声明为字符串,而不是像datetime那样

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