繁体   English   中英

如何在跨类的模块化Java项目中表示日期和时间属性? (mongo用作数据库)

[英]How to represent in a modular java project date and time attributes across classes? (mongo used as DB)

我们正在寻找代表类中日期和时间属性的最佳方法,这些属性将保留在mongoDB中。

Mongo内部使用javascript中的Date(),因此我们可以使用Java new Date(long millis)构造函数,该构造函数不建议使用它来创建日期实例,并将其再次用于millis中的getTime() 我们想要使用Date,因为以后可以在其上使用$ date mongo操作。 简单的长毫秒不可能做到这一点。

但是,我们正在考虑如何在项目中表示时间的最佳方法,因为我们可能会处理诸如夏时制,不同的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小时差异?
  • 您能想到一种更好的方法来表示我们项目中的日期/时间吗? 解决此问题的标准方法是什么?

您可以直接存储日期。 时间以UTC的形式存储在内部,因此夏令时对您来说不是问题。 该驱动程序当前不支持Java 8(或joda时间)日期/时间类型,但是周围有显示该操作方式的链接。 如果您使用的是词素,则可以在此处查看Java 8的LocalDateTime转换器的外观。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM