【发布时间】:2019-10-18 20:14:54
【问题描述】:
我想表示“营业日期”,例如“2019 年 6 月 3 日”发生的交易。为此,我们积极忽略时区,因为完全知道日本的“2019 年 6 月 3 日”可能是美国的“2019 年 6 月 2 日”——在“当天”内订购同样无关紧要。所有日期都将是今天或之前的日期。
我的明显答案是这是LocalDate。然而,其他人建议这将更好地表示为2019-06-03T00:00:00.000Z 的Instant。
除了在 UI 中将其转换/格式化为人类可读的日期时我们必须进行的不同调用之外,这两种方法之间实际上有什么区别吗?
这是与What's the difference between Instant and LocalDateTime? 不同的问题,因为时间与此问题无关,它仅与过去(或当前)日期有关。
【问题讨论】:
-
我曾经在一个产品上工作过,我们错误地将出生日期表示为瞬间。这是我们多年后仍在处理的那些史诗般的错误之一。使用
LocalDate。 -
@AndyTurner 这几乎听起来像是答案的基础——具体出了什么问题?
-
鉴于 LocalDate 是日期的自然类型,“其他人”是否有特殊原因建议使用
Instant?这就像说“我想表示一个整数”并且有人建议使用double... 需要一个非常好的理由。 -
@Oli 查看 jonskeet 的文章Storing UTC is not a silver bullet
-
@JonSkeet 谢谢,int/double 是一个很好的类比。
标签: java java.time.instant java-time