同事问在JS中,如何将日期字符串(如:2014-05-04)转换成Javascript中日期对象Date,上网查了资料,简单做一个小结:
创建一个日期对象:var objDate=new Date([arguments list]);
参数形式有以下5种:
new Date("month dd,yyyy hh:mm:ss"); new Date("month dd,yyyy"); new Date(yyyy,mth,dd,hh,mm,ss); new Date(yyyy,mth,dd); new Date(ms);
说明:
month:用英文表示月份名称,从January到December
mth:用整数表示月份,从0(1月)到11(12月)
dd:表示一个月中的第几天,从1到31
yyyy:四位数表示的年份
hh:小时数,从0(午夜)到23(晚11点)
mm:分钟数,从0到59的整数
ss:秒数,从0到59的整数
ms:毫秒数,为大于等于0的整数,表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。
另外,Javascript中日期的构造还可以支持 new Date("yyyy/MM/dd"); 其中:MM是整数表示月份从0(1月)到11(12月),这样再利用正则表达式就很方便地能够转换字符串日期了。
实例:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>JS日期测试</title> </head> <body> <script type="text/javascript"> <!-- document.write("<br/>" + new Date("February 3,2009")); document.write("<br/>" + new Date("February 3,2009 10:52:03")); document.write("<br/>"); document.write("<br/>" + new Date(2009,1,3)); document.write("<br/>" + new Date(2009,1,3,10,52,03)); document.write("<br/>"); document.write("<br/>" + new Date(Date.parse("February 3,2009"))); document.write("<br/>" + new Date(Date.parse("February 3,2009 10:52:03"))); document.write("<br/>" + new Date(Date.parse(2009,1,3))); //Output: NAN document.write("<br/>" + new Date(Date.parse(2009,1,3,10,52,03))); //Output: NAN document.write("<br/>" + new Date(Date.parse("2009/02/03"))); document.write("<br/>"); document.write("<br/>" + new Date("2009/02/03")); document.write("<br/>" + new Date("2009/02/03 11:12:13")); document.write("<br/>" + new Date("2009-02-03")); //Output: NAN window.onload=function(){ var dependedVal="2012-1-5"; //根据日期字符串转换成日期 var regEx = new RegExp("\\-","gi"); dependedVal=dependedVal.replace(regEx,"/"); //dependedVal=dependedVal.replace("\\-","/");//这样不行 alert(dependedVal) //法一:parse方式,需要2012/1/5这种格式! var milliseconds=Date.parse(dependedVal); alert(milliseconds) var dependedDate=new Date(); dependedDate.setTime(milliseconds); alert("parse方式:" + dependedDate); var now = new Date(); alert("相隔年数:"+(now.getFullYear() - dependedDate.getFullYear())); //法二:new方式 var dependedDate2 = new Date(dependedVal); alert("new 方式:" + dependedDate2); var now2 = new Date(); alert("相隔年数:"+(now2.getFullYear() - dependedDate2.getFullYear())); }; // --> </script> </body> </html>
打开页面运行结果:
依次弹出如下信息:
2012/1/5 1325692800000 parse方式:Thu Jan 5 00:00:00 UTC+0800 2012 相隔年数:2 new方式:Thu Jan 5 00:00:00 UTC+0800 2012 相隔年数:2
页面效果: