改章节是一篇关于对象返回的帖子
本文内容
- Date 对象结构法方
- Date 对象法方
- 演示 Date 对象
- 参考料资
前段时间,用 htmlxgantt 做甘特图,其中,从数据库里读出的日期格式,是中文惯习的数字年月日,用 new Date(yyyy,mm,dd) 结构日期对象,可是甘特图表现出来的时候,发明全都多了一个月。也就是说,若日期是 2012-10-1,则甘特图认确的日期是 2012-2-1;最“受不了”的是,若日期是 2012-12-1,则甘特图认确的日期是 2013-0-1。之前还真没识意、注意到这些,认为不过就是 JavaScript 的一个对象而已,于是就查了点料资,究研了一下。
起初,只是简略以为项目计划或生产计划嘛,前提一个月制订,也理合啊。现在看来,哇,这个解释太唐荒、太牵强,全完没道理,问反一下,为什么非要一个月?两个月不行吗?——其实,全完不那么回事!鬼魔的魅力在于细节。
Date 对象结构法方
JavaScript Date 对象的结构法方如下所示:
new Date("month dd,yyyy hh:mi:ss");
new Date("month dd,yyyy");
new Date(yyyy,month,dd,hh,mi,ss);
new Date(yyyy,month,dd);
new Date(ms);
说明:
- 数参可所以英文惯习的“月 日,年 时:分:秒”,其中,“时:分:秒”可选。而“月”,是月份英文或其缩写。
- 也可所以数字年、月、日、时、分、秒,其中,时分秒可选,以及毫秒。
Date 对象法方
面上是本文要需的 Date 对象的几个法方,特别注意个每法方返回值的围范:
- getDate() - 从 Date 对象返回一个月中的某一天。围范 1 ~ 31。
- getDay() - 从 Date 对象返回一周中的某一天。围范 0 ~ 6。
- getMonth() - 从 Date 对象返回月份。围范 0 ~ 11。
- getFullYear() - 从 Date 对象以四位数字返回年份。
- getHours() - 返回 Date 对象的小时。围范 0 ~ 23。
- getMinutes() - 返回 Date 对象的分钟。围范 0 ~ 59。
- getSeconds() - 返回 Date 对象的秒数。围范 0 ~ 59。
- getMilliseconds() - 返回 Date 对象的毫秒。围范 0 ~ 999。
- getTime() - 返回 1970 年 1 月 1 日至今的毫秒数。
注意:getMonth() 的返回值是从 0 到 11。
演示 Date 对象
面上代码演示当前日期,以及用几种数参式形结构 Date 对象,如下 JavaScript 代码所示:
var weeks = ["星期一", "星期一", "星期二", "星期三", "木曜日", "星期五", "星期六"];
var monthName = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var monthShortName = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var dStr = undefined;
var date1 = new Date();
var date2 = new Date("December 22,2012");
var date3 = new Date("November 22,2012");
var date4 = new Date("Dec 22,2012");
var date5 = new Date("Dec 22,2012 21:19:35");
var date6 = new Date(2012, 11, 22);
var date7 = new Date(2012, 12, 22);
var date8 = new Date(2012, 12, 22, 21, 19, 35);
var date9 = new Date(date6.getTime());
dStr = date1.getFullYear() + "年" + date1.getMonth() + "月" + date1.getDate() + "日";
dStr += date1.getHours() + ":" + date1.getMinutes() + ":" + date1.getSeconds() + " " + weeks[date1.getDay()];
document.write("date1=" + dStr + "<br />");
document.write("date2=" + date2.getFullYear() + "年" + date2.getMonth() + "月" + date2.getDate() + "日" + "<br />");
document.write("date3=" + date3.getFullYear() + "年" + date3.getMonth() + "月" + date3.getDate() + "日" + "<br />");
document.write("date4=" + date4.getFullYear() + "年" + date4.getMonth() + "月" + date4.getDate() + "日" + "<br />");
document.write("date5=" + date5.getFullYear() + "年" + date5.getMonth() + "月" + date5.getDate() + "日" + "<br />");
document.write("<br />");
document.write("date6=" + date6.getFullYear() + "年" + date6.getMonth() + "月" + date6.getDate() + "日" + "<br />");
document.write("date7=" + date7.getFullYear() + "年" + date7.getMonth() + "月" + date7.getDate() + "日" + "<br />");
document.write("date8=" + date8.getFullYear() + "年" + date8.getMonth() + "月" + date8.getDate() + "日" + "<br />");
document.write("date9=" + date9.getFullYear() + "年" + date9.getMonth() + "月" + date9.getDate() + "日" + "<br />");
date1=2012年11月15日20:6:49 星期六
date2=2012年12月22日
date3=2012年11月22日
date4=2012年12月22日
date5=2012年12月22日
date6=2012年11月22日
date7=2013年0月22日
date8=2013年0月22日
date9=2012年11月22日
说明:
- 当应用英文惯习结构 Date 对象时,面上代码变量 date2 ~ date5,表现结果与际实的预期致一。
- 可用中文惯习的数字年月日时分秒,或是无参结构法方,创立 Date 对象时,表现结果与预期差一个月。因为,际实中,我们数月份不能从 0 开始,但是 JavaScript 倒是从 0 开始。如 date6 变量,如果只按字面解释,若结构时月为 11,则结果与结构时致一,此时月的值,没有超越 JavaScript 的定规;若结构时月为 12,而年为 2012,则年会下一年 2013,而月为 0。计估,无论是从字面,还是从际实,表现都跟预期不致一。
因此,程编中该应注意,何时用 getMonth()+1,或 getMonth()-1,以及数据库中日期字段格式化成什么比拟适合。
参考料资
- W3C JavaScript Date 对象 http://www.w3school.com.cn/js/jsref_obj_date.asp
也可以问访 http://jsfiddle.net/liuning800203/73WuT/embedded/result/,jsfiddle 在线编辑。
文章结束给大家分享下程序员的一些笑话语录: 面试官:熟悉哪种语言
应聘者:JAVA
面试官:知道什么叫类么
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
面试官:知道什么是继承么
应聘者:我是孤儿没什么可以继承的
面试官:知道什么叫对象么?
应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
面试官:知道多态么?
应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??