在何时何地哪个更可取?
我不知道他们之间到底有什么区别。
来自LocalDateTime的文档
...Time被表示为纳秒精度。例如,“2007年10月2日13:45.30.123456789”的值可以存储在LocalDateTime中。
我以为LocalDateTime也可以接受,直到nanoseconds.So,我想,我可以用LocalDateTime替换我的代码--这些代码被声明为TimeStamp。如果我错了,请纠正我。
场景:我们计划用Java-8升级我们的项目。修改旧代码风格与JAVA-8的新功能(例如:Lambda,Streams等)。但我们在决定日期和时间时遇到了麻烦。java.util.Date编码大部分改为java.time.LocalDate或java.time.LocalDateTime。对于TimeStamp的案例,我对这个问题一无所知
我们应该用LocalDateTime替换它们吗?
发布于 2017-02-02 10:07:40
在当前的开发中,您应该更喜欢LocalDateTime和其他Java8时间类。
Instant)和持续时间(Duration)或基于片段的定义(LocalDate,LocalTime)之间更清晰地分离的优点。java.util.Date不同)。Duration.toDays())。ZonedDateTime)。一个小小的缺点是你可能想要利用很多第三方API缺乏支持。但是这应该只是时间问题,从Java8时间API到Calendar/Date的转换并不是展示的障碍。
如果您有一个成熟的软件,那么在您利用上面提到的一些优势之前,用基于Java8的接口替换旧的基于日期/日历的接口只是一个风险。
如果要用TimeStamp时间工具箱中的内容替换旧的Java8参数,则可以使用Instant、LocalDateTime或ZonedDateTime。区别在于,当涉及到计算时,Instant值是以基于ZoneOffset.UTC的方式处理的,而根据定义,LocalDateTime是没有任何时区关系的。
提示:使用LocalDateTime是一件很好的事情,如果在2018-01-02 10:24:12上发生了一些事情,比如印度的系统和美国的系统。在几乎所有其他情况下,您可能更喜欢使用Instant或ZonedDateTime显式定义时区。
发布于 2017-02-02 09:39:09
java.util.Date和java.sql.Timestamp实际上都是java.time.Instant的等价物,而不是LocalDateTime,日期时间戳和即时是Unix时间的实例,而LocalDateTime是当前时区的DateTime。
您可以清楚地看到这一点,因为这两个类都具有这个很好的方法(从java.util.Date继承):
java.util.Date::toInstant我认为您用LocalDate替换LocalDate的意思是,您实际上是在替换java.sql.Date,而不是java.util.Date。现在,sql.Date是LocalDate的等价物,并不等同于Instant,因为sql.Date缺少时间组件(尽管sql.Date是util.Date的子类,但对它调用getSeconds()将导致异常)。
https://stackoverflow.com/questions/41998144
复制相似问题