Html添加Date控件与JavaScript的Date类型格式化

最近有一个需求,需要在DoraCMS的系统当中加入一个日期和选择控件,并且要求与Bmob后台数据库的日期格式匹配。

首先我们需要了解Bmob的date类型,它与普通的date不同,是这样的格式:

它是一个json类型,第一个键值对是type和Date,第二个键值对是具体时间,是String类型。

所以我们首先加上Date控件,具体可以参考这个链接

我的实际代码如下

其中input的类型是datetime-local,是一个单独的时间类型,但是我们知道,我们从后台获取的expire值是bmob数据库的类型,是上面提到的json形式,然而在这个地方我们只需要时间与控件中的iso的内容对应即可,所以ng-model不能为formData.expire.在这里我的处理方式是这样的,我在controller中定义了一个新的变量叫做formData.expiredate,它默认为expire.iso的值,并转化为时间格式,代码如下

这样在页面上相当于将输入时间与expiredate这个变量双向绑定,可以正常显示expiredate的值了,在数据库交互是只要把expiredate的值写入expire中即可。但是因为上面这一步生成的格式是这样的Thu May 12 2016 08:00:00 GMT+0800 (中国标准时间)

我们直接把这个写入iso是不行的,所以需要对JS的date类型进行转码,转码主要参考该链接的函数。

实际使用时,因为Date的函数原型中并没有这个,所以我写到了函数里,直接对Date类型进行处理。

具体如下:

要注意其中的这条语句:var time = new Date(req.body.expiredate);

虽然传回来的已经是date类型了,但是还是要加这条才不会出错,不然上面的.getMonth这些函数都无法使用。

最后写入到expire中,代码如下:

大功告成~