我想知道是否有一种方法可以使用Java 8的新的LocalDate, LocalTime或LocalDateTime类来获取自1-1-1970 (epoch)以来的当前毫秒。

已知的方法如下:

long currentMilliseconds = new Date().getTime();

or

long currentMilliseconds = System.currentTimeMillis();

当前回答

你也可以使用java.sql.Timestamp来获取毫秒数。

LocalDateTime now = LocalDateTime.now();
long milliSeconds = Timestamp.valueOf(now).getTime();
System.out.println("MilliSeconds: "+milliSeconds);

其他回答

日期和时间为字符串到长(毫秒):

String dateTimeString = "2020-12-12T14:34:18.000Z";

DateTimeFormatter formatter = DateTimeFormatter
                .ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);

LocalDateTime localDateTime = LocalDateTime
        .parse(dateTimeString, formatter);

Long dateTimeMillis = localDateTime
        .atZone(ZoneId.systemDefault())
        .toInstant()
        .toEpochMilli();

要避免ZoneId,您可以这样做:

LocalDateTime date = LocalDateTime.of(1970, 1, 1, 0, 0);

System.out.println("Initial Epoch (TimeInMillis): " + date.toInstant(ZoneOffset.ofTotalSeconds(0)).toEpochMilli());

得到0作为值,这是对的!

你也可以使用java.sql.Timestamp来获取毫秒数。

LocalDateTime now = LocalDateTime.now();
long milliSeconds = Timestamp.valueOf(now).getTime();
System.out.println("MilliSeconds: "+milliSeconds);

从Java 8开始,你可以调用Java .time. instant . toepochmilli()。

例如,调用

final long currentTimeJava8 = Instant.now().toEpochMilli();

得到的结果和

final long currentTimeJava1 = System.currentTimeMillis();

要获得以毫秒为单位的当前时间(从epoch开始),请使用System.currentTimeMillis()。