1.Date对象介绍
ECMAScript提供了Date类型来处理时间和日期,用来呈现时间中的某个时刻.
它的实例化构造方法如下所示:
new Date(); new Date(value); // value是一个整数值表示自1970年1月1日00:00:00以来的毫秒数 new Date(dateString); new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds); // year和monthIndex参数必填, day默认值为1,其它参数默认值为0 // monthIndex是从0开始的,意味着"1"表示2月的意思 // 如果数值大于时间范围,则会进行调整,比如: Date(2013, 12, 1, 0, 10)等于new Date(2014, 1, 1, 0, 10) // 如果我们实例化时,不指定时间,则默认以当前时间点来初始化它.
实例如下所示:
var date1 = new Date;
console.log(date1) // 打印当前时间
// 也可以new Date("2000/01/01 00:00:00");
var date2 = new Date('1995-12-17T03:24:00'); // 由于12是13月的意思,已经超过月份范围,所以实际为1996-1-17 03:24:00
console.log(date2)
var date3 = new Date(2013, 12, 1, 0, 10);
console.log(date3)
2.获取两个Date之间的时间差
两个Date相减,会返回一个以毫秒为单位的value.如果以一个月为30天为准的话,所以可以这样计算时间差:
var date1 = new Date(2010, 5, 1, 1, 10); var date2 = new Date(2011, 4, 13, 3, 30); var total = date2-date1; var year = Math.floor(total/(1000*60*60*24*360)); var month = Math.floor(total%(1000*60*60*24*360)/(1000*60*60*24*30)); var day = Math.floor(total%(1000*60*60*24*30)/(1000*60*60*24)); var hour = Math.floor(total%(1000*60*60*24)/(1000*60*60)); var min = Math.floor(total%(1000*60*60)/(1000*60)); var second = Math.floor(total%(1000*60)/(1000)); console.log(year,month,day,hour,min,second); // 打印两个时间差
3.Date提供的静态方法
- Date.now() : 返回自 1970-1-1 00:00:00 UTC(世界标准时间)至今所经过的毫秒数
4.Date提供的实例get方法
- date.getFullYear() : 根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字)。
- date.getMonth() : 根据本地时间返回指定日期对象的月份(0-11)。
- date.getDate() : 根据本地时间返回指定日期对象的月份中的第几天(1-31)。
- date.getDay() : 根据本地时间返回指定日期对象的星期中的第几天(0-6)。
- date.getHours() :根据本地时间返回指定日期对象的小时(0-23)。
- date.getMinutes() :根据本地时间返回指定日期对象的分钟(0-59)。
- date.getSeconds() : 根据本地时间返回指定日期对象的秒数(0-59)。
- date.getMilliseconds() : 根据本地时间返回指定日期对象的毫秒(0-999)。
- date.getTime() : 返回从1970-1-1 00:00:00 UTC(协调世界时)到该日期经过的毫秒数,对于1970-1-1 00:00:00 UTC之前的时间返回负值。
- date.getTimezoneOffset() : 返回当前时区的时区偏移,单位为分钟
- date.getUTCDate() : 根据世界时返回特定日期对象一个月的第几天(1-31).
- date.getUTCDay() : 根据世界时返回特定日期对象一个星期的第几天(0-6).
- date.getUTCFullYear() :根据世界时返回特定日期对象所在的年份(4位数).
- date.getUTCHours() :根据世界时返回特定日期对象当前的小时(0-23).
- date.getUTCMilliseconds() :根据世界时返回特定日期对象的毫秒数(0-999).
- date.getUTCMinutes() :根据世界时返回特定日期对象的分钟数(0-59).
- date.getUTCMonth() :根据世界时返回特定日期对象的月份(0-11).
- date.getUTCSeconds() :根据世界时返回特定日期对象的秒数(0-59).
示例如下所示:
var date = new Date(2014, 11, 1, 12, 10); console.log(date.getFullYear()); // 打印 2014 console.log(date.getMonth()); // 打印11(12月份) console.log(date.getDate()); // 打印1(1号)
5.Date提供的实例set方法
- date.setFullYear() : 根据本地时间为指定日期对象设置完整年份。
- date.setMonth() : 根据本地时间为指定日期对象设置月份。
- date.setHours() : 根据本地时间为指定日期对象设置小时数。
- date.setDate() : 根据本地时间为指定的日期对象设置月份中的第几天。
- date.setMinutes() : 根据本地时间为指定日期对象设置分钟数。
- date.setSeconds() : 根据本地时间为指定日期对象设置秒数。
- date.setMilliseconds() : 根据本地时间为指定日期对象设置毫秒数。
- date.setTime() : 通过指定从 1970-1-1 00:00:00 UTC 开始经过的毫秒数来设置日期对象的时间,对于早于 1970-1-1 00:00:00 UTC的时间可使用负值。
- date.setUTCDate() : 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
- date.setUTCFullYear() : 根据世界时设置 Date 对象中的年份(四位数字)。
- date.setUTCHours() : 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
- date.setUTCMilliseconds() : 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
- date.setUTCMinutes() : 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
- date.setUTCMonth() : 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
- date.setUTCSeconds() : 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
示例如下所示:
var date = new Date(2014, 11, 1, 12, 10); date.setFullYear(2016); date.setDate(12); console.log(date.getFullYear()); // 打印 2016 console.log(date.getMonth()); // 打印11(12月份) console.log(date.getDate()); // 打印12(12号)
6.QML扩展的Date方法
如下图所示,QML对ECMAScript的Date对象进行了扩展,添加了下面几个方法:
其中local表示不同的国家区域,比如:中国(zh-CN)、美国(en-US)、日本(ja-JP)、德国(de-DE).
dateString表示的是时间字符串,format表示的是时间格式.
比如:
var date = new Date(); console.log(date.toLocaleString(Qt.locale("de-DE")));
打印指定格式年月日时分秒,则使用:
console.log( new Date().toLocaleString(Qt.locale(), "ddd yyyy-MM-dd hh:mm:ss"));
如果只想打印时间则使用toLocaleTimeString()、如果只打印日期则使用toLocaleDateString