我正在将一些 C# 代码转换为 Java,并选择了 JodaTime
的 DateTime
类来替换 C#
的 System.DateTime
。
在 C#
中,DateTime
类有一个名为 MaxValue
的字段和一个名为 MinValue
的字段,它返回最大的DateTime
对象可以容纳的最小可能值。
我正在尝试使用 JodaTime
api 实现相同的目的。我已经阅读了其他帖子的一些建议
这个:Java equivalent of .NET DateTime.MinValue, DateTime.Today回答如何在 JodaTime
中设置今天的日期,但是在回答问题的后半部分时,关于最小值,他们转向 Calendar
和 Date
同样,我看到过关于将最大长值作为构造函数参数传递的建议,但它因依赖于将来可能会更改的类而受到批评,因此在 API 更新后可能不兼容或不准确。
那么,有没有一种绝对正确的方法可以做到这一点?如果没有,是否有实现此目标的好方法?
最佳答案
Java 8 LocalDate 有两个值。 LocalDate.MAX和 LocalDate.MIN
LocalDate.MAX - The maximum supported LocalDate, '+999999999-12-31'. This could be used by an application as a "far future" date.
LocalDate.MIN - The minimum supported LocalDate, '-999999999-01-01'. This could be used by an application as a "far past" date.
注意:这些不会转换为 Long.MIN_VALUE 或 Long.MAX_VALUE。
如果从 C# 迁移并且日期/时间的工作方式对您很重要,我建议使用 Java 8,因为它具有闭包和基于 JodaTime 的新 DateTime API。如果您担心 API 的 future ,您应该使用这个新的 DateTime API。
我认为您可以假设 Long.MIN_VALUE 和 Long.MAX_VALUE 永远不会改变,因为它们基于带符号的 64 位值如何工作的定义。 (64 位值的工作方式很可能在您出生之前就已标准化)您还可以假设 Date
不会更改,因为它自发布以来并已被替换后没有太大变化更没有理由改变它。理论上它可能会被弃用,但实际上仍然有太多代码使用它。
恕我直言,我使用 long
来表示以毫秒为单位的时间 ala System.currentTimeMillis() 并且我使用 Long.MIN_VALUE 和 Long.MAX_VALUE。
如果您担心使用良好的 API 和 future 验证您的代码,我建议您避免使用日历。并不是说一切都不好,而是有充分的理由想要更换它。
关于c# - 如何创建或设置具有最大值的 JodaTime DateTime 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23103666/