Java的Date获取时间函数都是deprecated
可以使用:
https://*.com/questions/5175728/how-to-get-the-current-date-time-in-java
所说方法
It depends on what form of date / time you want:
-
If you want the date / time as a single numeric value, then
System.currentTimeMillis()
gives you that, expressed as the number of milliseconds after the UNIX epoch (as a Javalong
). This value is a delta from a UTC time-point, and is independent of the local time-zone ... assuming that the system clock has been set correctly. -
If you want the date / time in a form that allows you to access the components (year, month, etc) numerically, you could use one of the following:
-
new Date()
gives you aDate
object initialized with the current date / time. The problem is that theDate
API methods are mostly flawed ... and deprecated. -
Calendar.getInstance()
gives you aCalendar
object initialized with the current date / time, using the defaultLocale
andTimeZone
. Other overloads allow you to use a specificLocale
and/orTimeZone
. Calendar works ... but the APIs are still cumbersome. -
new org.joda.time.DateTime()
gives you a Joda-time object initialized with the current date / time, using the default time zone and chronology. There are lots of other Joda alternatives ... too many to describe here. -
in Java 8, calling
LocalDateTime.now()
andZonedDateTime.now()
will give you representations for the current date / time.
-
Prior to Java 8, most people who know about these things recommended Joda-time as having (by far) the best Java APIs for doing things involving time point and duration calculations. With Java 8, this is no longer true. However, if you are already using Joda time in your codebase, there is no strong reason to migrate.
date和datetime转换
https://*.com/questions/19431234/converting-between-java-time-localdatetime-and-java-util-date
Date in = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(), ZoneId.systemDefault());
Date out = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());