JAVA时间里面的getTime

Python018

JAVA时间里面的getTime,第1张

确实是一个值得思考的问题。我只发现浅层次的直接原因:精确到秒

这个差异是由 SimpleDateFormat("yyyy-MM-dd HH:mm:ss")在解析特定日期

1927-12-31 23:54:07到1927-12-31 23:54:08造成的。

这“一秒钟”内发生突变,相差352000毫秒,约5分52秒。

就能解释你“得到的结果就为1940-01-30 23:54:08"的误差

用Calendar和GregorianCalendar类验证,结果相同。

是Java的错误,还是历史规定,没有查到相关资料,深层次的原因不明。

package Test20201227

import java.text.SimpleDateFormat

import java.util.Date

public class Test02 {

public static void main(String[] args) {

//新建日期对象  并设置时间为实时

Date date = new Date(System.currentTimeMillis())

//设置日期格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd")

//打印格式化以后的日期

System.out.println(sdf.format(date))

}

}

d的类型不是已经在上面一行声明了是Date类型吗?

哦,突然明白题主的意思了,题主的疑问是d没通过new Date()方式获得是不是d就不是Date类型了,是吧?

要关注方法的返回值类型。比如sdf.parse(line),它的返回类型是Date,返回的值赋给了d,所以d也是Date类型,这种方式并不需要new来获取。当然,你要先Date d=new Date();d=sdf.parse(line);也可以,但是这不多此一举了吗?