Timestamp timestamp = Timestamp.valueOf("1970-01-01 01:00:00");
System.out.println(timestamp.getTime());
你知道这段代码返回-25200000吗?我以为1970-01-01 00:00:00之后的时间会是正数。
发布于 2020-04-21 23:21:26
您正在使用一个可怕的日期-时间类,这个类在几年前就被JSR310中定义的现代java.time类所取代。切勿使用java.sql.Timestamp
。
将您的输入解析为LocalDateTime
,因为它缺少时区或与UTC的偏移量的指示器。将中间的空格替换为T
,以符合日期时间格式的ISO8601标准。
String input = "1970-01-01 01:00:00".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;
显然,你的意思是让它代表UTC中的一个时刻。应用偏移量以获取OffsetDateTime
。
OffsetDateTime odt = ldt.atOffset( ZoneOffset.UTC ) ;
获取自1970年第一个时刻的纪元引用以来的毫秒计数。
long millis = odt.toInstant().toEpochMilli() ;
3600000
https://stackoverflow.com/questions/61341120
复制相似问题