tl;博士
经过。
Duration // Represent a span-of-time unattached to the timeline.
.between(
LocalTime.MIN , // 00:00:00.0
LocalTime.of( 15 , 0 ) // 3 PM, with no date, and no time zone or offset-from-UTC.
)
.toMilliseconds() // Get a count of elapsed milliseconds.
并将毫秒数解析为没有日期、区域或偏移量的时间。
LocalTime lt = LocalTime.MIN.plus ( Duration.ofMilliseconds( milliseconds ) ) ;
java.time
您正在使用糟糕的日期时间类,这些类在几年前被JSR 310 中定义的现代java.time类所取代。
我想传递一些时间值(java.sql.Time)
该类型已被java.time.LocalTime
类替换。
LocalTime lt = LocalTime.of( 15 , 0 ) ; // 3 PM.
我通过调用getTime()方法将Time类型解析为long类型,这意味着我使用long类型在前端和后端之间进行通信。
那不是最理想的。更好地使用标准ISO 8601格式通过文本传达日期时间值。
java.time类在解析/生成字符串时默认使用标准 ISO 8601 格式。
String output = lt.toString() ;
……和……</p>
LocalTime lt = LocalTime.parse( "15:00" ) ;
但是,如果我们必须继续这种以毫秒为单位的黑客攻击,我们可以。
表示从一天中最早的时间开始的时间跨度。这将是 00:00:00 对于类中表示的一般 24 小时日LocalTime
。顺便说一句,在同一日期的某些时区,一天可能从一天中的另一个时间开始,例如 01:00:00,但这在这里无关紧要。
Duration d = Duration.between( LocalTime.MIN , lt ) ;
long milliseconds = d.toMillis() ;
并将毫秒数解析回 aDuration
和LocalTime
.
Duration d = Duration.ofMillis( milliseconds ) ;
LocalTime lt = LocalTime.MIN.plus( d ) ;
将前端和后端的时区更改为UTC时间
没必要。LocalTime
类和Duration
类都没有时区的概念,也没有从 UTC 偏移的概念。所以区域/偏移量不是问题。
关于您对遗留课程的问题,我可以提出很多观点。但真的没有理由打扰。这些课程实在是太可怕了,应该直接放弃。