getTime()和parse()的区别
parse(): parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。
getTime(): getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。
getTIme()方法是把一个date对象转成毫秒;
parse方法是把一个时间格式的字符串转换成毫秒。
parse():解析一个包含日期的字符串,并返回该日期与1970年1月1日午夜之间所间隔的毫秒数。
Date.parse(dateVal)
其中必选项 dateVal 是一个包含以诸如 "Jan 5, 1996 08:47:00" 的格式表示的日期的字符串,或者是一个从 ActiveX(R) 对象或其他对象中获取的 VT_DATE值。
说明:
parse方法返回一个整数值!!这个整数表示 dateVal 中所包含的日期与 1970 年 1 月 1 日午夜之间相间隔的毫秒数。
parse方法是 Date 对象的一个静态方法。正因为它是一个静态方法,它是通过方法被调用的,而不是作为一个已创建 Date 对象的一个方法被调用。
date.getTime()所返回的是一个long型的毫秒数,如果要显示日期,需要进行格式化,比如使用 SimpleDateFormat
如果使用getTime()想得到时间格式为2008-05-14这种时间格式(获取特定格式的时间)需要格式化的。
例子:
Date date = new Date();
System.out.println(date.getTime());
输出结果是1210745780625
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.format(new Date());
得到的日期格式为:2008-05-14
注:
getTime()和Date.parse()方法都是返回某个时间到1970年1月1日0:00的毫秒数,但这次遇到了问题。
当使用Date.parser()的时候,返回的却是这个时间点到1970年1月1日08:00的毫秒数。下面是代码:
function startTime() {
let
date
=
newDate
,
year
=
date.getFullYear(),
month
=
date.getMonth() +
1,
day
=
date.getDate();
return
Date.parse(
year+
'-' + month + '-' + day) ;
}
原来当年月日中间用’-‘的符号的时候,它的解析是用UTC 时区处理,而不是用本地时区处理的,因此和格林尼治恰好差8小时,就成了这个时间点到1970年1月1日08:00的毫秒数。
解决的方法是中间用其他符号,如‘/’。
然后getTime()也会有一样的问题。