getTime()和parse()的区别

Posted 彼岸辰星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getTime()和parse()的区别相关的知识,希望对你有一定的参考价值。

 

 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 = new Date,
        year = date.getFullYear(),
        month = date.getMonth() + 1,
        day = date.getDate();
    return Date.parse(year + ‘-‘ + month + ‘-‘ + day) ;
}

原来当年月日中间用’-‘的符号的时候,它的解析是用UTC 时区处理,而不是用本地时区处理的,因此和格林尼治恰好差8小时,就成了这个时间点到1970年1月1日08:00的毫秒数。 
解决的方法是中间用其他符号,如‘/’。 
然后getTime()也会有一样的问题。

 

以上是关于getTime()和parse()的区别的主要内容,如果未能解决你的问题,请参考以下文章

JS代码片段:一个日期离现在多久了

Date.parse的兼容性问题

浅谈AngularJS中的$parse和$eval

new Date().getTime()和System.currentTimeMillis()对比

clock()time()clock_gettime()和gettimeofday()函数的用法和区别

写个比较时间大小老出问题,最后才发现放的位置不对