平时在我们做项目的时候,难免会跟时间对象打交道,怎么将时间根据业务需求展现在客户端中仍然需要一些小技巧,现根据Date对象相关知识整理如下:
创建日期对象:
根据Date()构造函数创建日期对象:
分为两种情况:
(1)不传入参数时,即var now = new Date(); //此时返回新创建的日期对象,并自动获得当前日期和时间
(2)传入一个表示该日期的毫秒数,鉴于我们日常不使用毫秒数来表示时间,此时有两个Date类型的方法用于将表示日期的字符串参数转化为相对应的毫秒数,从而传给Date()构造函数产生相对应的日期对象:
①Date.parse():
接收的日期字符串格式有下面几种:
“月/日/年” 、"英文月名 日,年"、“英文星期几 英文月名 日 年 时:分:秒 时区”、
ISO 8061扩展格式YYYY-MM-DDTHH:mm:ss:sssZ(例如2004-05-25T00:00:00),只有兼容ES5的实现支持这种格式。
②Date.UTC():使用数字的格式
Date.UTC(2005,4,5,17,55,55) 注意,此表示2005年5月5日17点55分55秒,月份是从0开始算起的。
③Date.now():简便获得当前时间的毫秒数
Date对象继承的方法:
类别一:返回日期字符串表示
(1)toLocaleString():返回日期的字符串表示,不同浏览器有差异
(2)toString():返回日期的字符串表示,不同浏览器有差异
(3)valueOf():返回日期的毫秒表示,可以借此进行日期的比较
类别二:返回日常表示的时间
(年)Date.getFullYear() // 返回四位数年份
(月)Date.getMonth() // 返回月份数,从0算起
(日)Date.getDate() // 返回日数,从1算起
(星期)Date.getDay() // 返回星期数,0(周日) 到 6(周六)
(时)Date.getHours() //返回小时数 0-23
(分)Date.getMinutes() // 返回分钟数 0-59
(秒)Date.getSeconds() // 返回秒数 0-59
类别三:返回变成中一般用到的毫秒数
(1)Date.getMilliseconds() //返回当前日期的毫秒数,不是经过的毫秒数
(2)Date.getTime() //返回表示日期的毫秒数,即经过的毫秒数,与valueOf()返回值相同
类别四:设置日常表示的时间
(年)Date.setFullYear() // 设置四位数年份,传入4位数字
(月)Date.setMonth() // 设置0-11(十二月)的月份,超过11则增加年份
(日)Date.setDate() // 设置月份中的天数,如果超过了该月中应有的天数,则增加月份
(时)Date.setHours() // 设置小时数 0-23,超过则增加天数
(分)Date.setMinutes() // 设置分钟数 0-59,超过增加小时数
(秒)Date.setSeconds() // 返回秒数 0-59,超过增加分钟数
(毫秒)Date.setMilliseconds() //返回日期中的毫秒数
以上是Date日期对象我们日常用到的大部分知识,下面讲一下如何在日常应用中使用日期对象
一般情况我们会从Json对象中提取日期对象,但日期转换成Json对象后,返回数据类似如下:
/Date(1475944651437)/
这样的数据形式我们无法判断当前的日期时间,故可以使用以下方法对数据进行转换成日期对象。
function
change
(
jsonDate
){
var
date
=
new
Date
(
parseInt
(
jsonDate
.
replace
(
'/Date('
,
''
).
replace
(
')/'
,
''
),
10
));
return
date
;
}
原理其实很简单,只需把数据中的数字部分提取出来基于十进制来取整得到对应的毫秒数传给Date()构造函数即可new出对应的日期对象。
在前端显示部分,我们需要将日期时间显示到页面,此时有以下方法将日期对象表示出我们日常中常见的日期格式:
function
getDate
(
date
) {
var
year
=
date
.
getFullYear
();
var
month
=
date
.
getMonth
()
+
1
;
var
day
=
date
.
getDate
();
return
year
+
"年"
+
month
+
"月"
+
day + "日"
;
}
function
getDateTime
(
date
) {
var
year
=
date
.
getFullYear
();
var
month
=
date
.
getMonth
()
+
1
;
var
day
=
date
.
getDate
();
var hour
=
date
.
getHours
();
var minute
=
date
.
getMinutes
();
var second
=
date
.
getSeconds
();
return
year
+
"-"
+
month
+
"-"
+
day
+
" "
+ hour
+
":"
+ minute
+
":"
+
second
;
}