我们正在寻找在我们的类中表示日期和时间属性的最佳方式,这些属性被持久化在mongoDB中。
Mongo内部使用来自javascript的Date(),所以我们可以使用Java new Date(long millis)
构造函数来创建日期实例,并使用它来再次以毫升为单位返回getTime()
。我们希望使用Date,因为我们以后可以对它使用$ datmongo操作。这对于简单的长铣刀来说是不可能的。
然而,我们正在考虑如何在我们的项目中表示时间的最佳方式,因为我们可能会使用夏令时,不同的UTC区域等。
我们的方法是:
我们想和你核实一下它是否安全有效。public class SomeClass{
private Date someDate;
public Calendar getDate(){
return new GregorianCalendar().setTimeInMillis(someDate.getTime());
}
}
日历应该是安全的使用在UTC区域和节省时间和比较操作等方面,AFAIK。
我们也在考虑使用Java 8 Time,但我们不确定使用新Java的后果——如果我们可能不会遇到一些问题。
- 那么这种方法好吗? 我们是否应该切换到Java 8并使用Time,因为这样做是安全的?
- 如果Date仅用于存储数据,那么使用它是否真的安全然后把钱拿回来?我们会不会偶然发现一些问题,如不可预测的+/- 1小时的差异在日期/时间价值吗?
- 你能想到一个更好的方法来表示日期/时间吗项目吗?解决这个问题的标准方法是什么?
可以直接存储Date。时间在内部存储为UTC,所以夏令时对你来说应该不是问题。该驱动程序目前不支持Java 8(或joda time)日期/时间类型,但有一些链接显示如何实现这一点。如果您正在使用morphia,您可以在这里看到Java 8的LocalDateTime转换器的样子。