Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 淘汰-如何绑定日期只_Date_Datetime_Knockout.js - Fatal编程技术网

Date 淘汰-如何绑定日期只

Date 淘汰-如何绑定日期只,date,datetime,knockout.js,Date,Datetime,Knockout.js,我有一个数组,其中一个键是createDate。在数组的foreach循环中,我通过敲除文本绑定提取createDate值 <span data-bind="text: createDate"></span> <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td> 该值显示:“2013-04-24T16:29:00.38”。。。这就是它在数据库中的存在方式。

我有一个数组,其中一个键是createDate。在数组的foreach循环中,我通过敲除文本绑定提取createDate值

<span data-bind="text: createDate"></span>
 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>

该值显示:“2013-04-24T16:29:00.38”。。。这就是它在数据库中的存在方式。是否有一种格式化(在绑定中)的方法只显示日期?或者我必须将其保存为数据库中的日期才能实现这一点

 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>
例如,您可以使用以下设置2位小数:

<span data-bind="text: price.ToFixed(2)"></span>
 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>

是否有这样简单的东西只显示:“2013-04-24”

 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>
提前谢谢

对我来说,关键是

 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>
您可以做如下简单的事情:

<span data-bind="text: moment(createDate()).format('MM/DD/YYYY')"></span>
 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>

或者,您可以编写一个绑定帮助器,它类似于:

<span data-bind="dateString: createDate, datePattern: 'MM/DD/YYYY'"></span>
 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>

添加此javascript:

String.prototype.Format = function (fmt) {
var myDate = this;
var o = {
    "M+": myDate.getMonth() + 1,
    "d+": myDate.getDate(),
    "h+": myDate.getHours(),
    "m+": myDate.getMinutes(),
    "s+": myDate.getSeconds(),
    "q+": Math.floor((myDate.getMonth() + 3) / 3),
    "S": myDate.getMilliseconds()
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (myDate.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>
})

 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>
然后您可以这样使用:

<span data-bind="text: createDate().Format('MM/DD/YYYY')"></span>
 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>

thanx仅显示时间对我有效:

 <td data-bind="text:moment(OpeningTime()).format('h:mm:ss a')"></td>


@Jason:使用moment.js非常有效,只需稍加修改:“text:moment(createDate.format('MM/DD/yyyyy')”。。。createDate不是一个函数,因此省略()。这是干净和简单的,所以我甚至没有尝试绑定助手的替代方案。非常感谢!很酷,很高兴有帮助。我认为createDate是一个ko.observable(),但如果不是,那么是的,就不需要“()”。@JasonHaley第二个解决方案的链接已经失效:(这个链接可能会起作用(可能是不同的文章,但展示了相同的概念):这是怎么可能的,它在哪里被记录了?@Zack:谢谢,但是moment.js很好用,而且很简单(通过上面的答案)。