在 Java 中操作和存储日期的最佳实践是什么?
操作和存储日期的最佳实践是什么,例如在企业Java应用程序中使用GregorianCalendar?
寻找反馈,我会将任何出色的答案整合到其他人可以使用的最佳实践中。
操作和存储日期的最佳实践是什么,例如在企业Java应用程序中使用GregorianCalendar?
寻找反馈,我会将任何出色的答案整合到其他人可以使用的最佳实践中。
最佳做法通常恰恰不是从重日期对象的角度来考虑,而是存储一个时间点。这通常是通过存储一个不受角落情况或潜在解析问题影响的值来完成的。为此,人们通常会存储自我们称之为纪元(1970-01-01)的固定点以来经过的毫秒(或秒)数。这是非常常见的,任何Java API都允许您将任何类型的日期转换为/从纪元以来以ms表示的时间。
这是为了存储。例如,如果有此需要,您还可以存储用户的首选时区。
现在这样的日期以毫秒为单位,例如:
System.out.println( System.currentTimeMillis() );
1264875453
当它显示给最终用户时,这不是很有用,这是理所当然的。
这就是为什么在向最终用户显示之前,使用示例Joda时间将其转换为某种用户友好的格式的原因。
您询问了最佳实践,以下是我对此的看法:将“日期”对象存储在数据库中,而不是以毫秒为单位的时间,这是使用浮点数来表示货币金额。
这通常是一个巨大的代码气味。
所以Java中的Joda时间是操纵日期的方式,是的。但是Joda是去商店约会的方式吗?当然不是。
Joda是要走的路。为什么?
在某个阶段,Java Date/Time API 将被 JSR-310 取代。我相信这将基于Joda背后的人所做的工作,因此您将学习一个将影响新标准Java API的API。