VBScript 中,通过 CDate 可以轻松将字符串类型的日期转化成日期类型的日期。
在 JS 中,就没有那么轻松了。
其中有一种方法是:Date.parse(dateVal),此函数功能强大,但是有个致命的缺点,那就是不支持我们常用的“年-月-日”格式,短日期可以使用“/”或“-”作为日期分隔符,但是必须用月/日/年的格式来表示,例如"7/20/96"。
另一种方法是使用 split,比如:
var dtStr = "2006-11-25";
var dtArr = dtStr.split("-");
var dt = new Date(dtArr[0], dtArr[1], dtArr[2]);
但这种方法较为死板,要求固定的日期格式,只有在没有办法的情况下才用。
如果我们可以将年月日拆分开,就尽量将其拆开,比如 ASP 分别输出年月日。然后用 new Date 来处理,返回的便是日期类型。
日期格式化
博主述:这段代码在项目里跑了下,代码如下
var i=1;
var dtArr = ("2009-7-6").split("-");
var stateDate=new Date(dtArr[0], dtArr[1], dtArr[2]);
var month=stateDate.getMonth()+i; //得到月份
stateDate.setMonth(month);
dtsProbationerEndDate.val(stateDate.format("yyyy-MM-dd"));
发现有个问题就是为了避免日期出现0月份,所以进行了this.getMonth()+1,在下面会遇到显示时间为2009-9-6,正确显示应为2009-8-6,故修改了下调用代码如下:
var dtArr = (lblProbationerStartDate.text()).split("-");
var stateDate=new Date(dtArr[0], dtArr[1], dtArr[2]);
month=stateDate.getMonth()+i-1; //得到月份
stateDate.setMonth(month);
dtsProbationerEndDate.val(stateDate.format("yyyy-MM-dd"));