我正在使用Typescript,Knockout和bootstrap编写MVC应用程序。
我有一个字段,我将bootstrap v3 datetimepicker绑定到。
绑定看起来像这样:
$('.form-group input[type="datetime"]').datetimepicker({ locale: 'en-GB' });
出于某种原因,我有两个问题。
locale
设置什么,输入字段似乎总是将日期呈现为美国格式。我不太担心#1,除非它导致#2,我试图直接在淘汰赛中发布日期值,这给了我一个MVC似乎不喜欢的/Date(1439838919784)/
值。 / p>
之后,我尝试通过替换字符串的日期位,将日期值转换为简单的刻度表示,创建一个JavaScript日期对象并发布:
var koDate = this.BetDetailsViewModel().Event.Date();
var dateString = new Date(parseInt(koDate.replace("/Date(", "").replace(")/", ""), 10));
这给了我一个这样的值:Mon Aug 17 2015 20:15:19 GMT+0100 (GMT Daylight Time)
MVC似乎也没有接受。
最后,看到引导程序datetimepicker使用了moment.js我以为我会尝试从日期创建一个时刻对象并发布。我将KO viewmodel属性弹出为moment()
ctor,如下所示:
var momentDate = moment(this.BetDetailsViewModel().Event.Date()).format();
这给了我一个这样的值:MVC似乎喜欢的2015-08-17T20:23:34+01:00
。
虽然技术上我刚刚设法解决了第二个问题,但似乎我必须更加努力地工作!
有什么方法可以避免从KO观察中创造一个时刻吗?
另外,为什么语言环境似乎不像我期望的那样工作? datetimepicker上的文档非常精简!
修改
为了澄清,这就是我按脚本顺序包含的内容: