无法将LocalDate转换为时间戳[重复]

问题描述 投票:-2回答:1

我正在尝试将LocalDate转换为时间戳,但一直在说:valueOf(java.lang.String) in Timestamp cannot be applied to (java.time.LocalDateTime)

我在做什么:

LocalDate date = LocalDate.of(year, month+1, day);
Timestamp ts = Timestamp.valueOf(date.atTime(LocalTime.MIDNIGHT));

年,月和日来自DatePicker。

java timestamp localdate
1个回答
0
投票

获取日期。

LocalDate localDate = LocalDate.of( 2020 , Month.JANUARY , 23 ) ;

获取在某个时区或UTC偏移量中看到的一天的第一时刻。

不要假设一天从00:00开始。一些区域中的某些日期从另一个时间开始,例如01:00。

ZoneId z = ZoneId.of( "Africa/Casablanca" ) ;
ZonedDateTime zdt = LocalDate.atStartOfDay( z ) ;

获得自UTC 1970年第一时刻的纪元参考以来的毫秒数。

long milliseconds = zdt.toInstant().toEpochMilli() ;

将该数字提供给java.sql.Timestamp的构造函数。

java.sql.Timestamp ts = new Timestamp( milliseconds) ;

甚至更好,请跳过Timestamp类。该类存在严重缺陷,被设计为肮脏的hack。该类现在是旧式的,几年前被现代的[[java.time类所取代。

从JDBC 4.2开始,我们可以直接与数据库交换

java.time

类。 myPrepared
© www.soinside.com 2019 - 2024. All rights reserved.