2017-07-19 15 views
0

我正在构建一个简单的组织器应用程序,并试图选择一个类来保留我的日期和时间在对象中。我应该使用哪些类?我已经看到,Date类中的很多方法已被弃用。也许Calendar呢?推荐一些。谢谢。在Java中使用哪个类保留时间和日期

+1

如何在'java.time类。*'包? – Kayaman

+0

新的?但是如何支持后向? –

+3

为什么你需要向后支持? –

回答

1

这取决于你想要什么样的日期/时间。

  • System.currentTimeMillis() - 这会给你表示为UNIX纪元为后毫秒数的简单的数值。
  • 如果你想年月日的格式,你可以使用其中之一:

    new Date() - 这将给你一个与当前的日期/时间初始化的Date对象。由于API方法大多有缺陷,因此不推荐使用。

    new org.joda.time.DateTime() - 这会给你一个约会时间对象 用当前日期/时间初始化。乔达时间包括一个伟大的API用于做任何涉及时间点计算的时间点。但是,对于Java 8,这不再是真的

    Calendar.getInstance() - 这会为您提供一个使用默认语言环境和TimeZone在当前日期/时间初始化的Calendar对象。

  • 如果你只需要一个简单的方法来输出格式YYYY.MM.DD-HH.MM.SS时间戳 - 一个很常见的情况 - 然后使用此:

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); 
    
  • 瞬间 - 如果您希望在业务逻辑和数据存储/交换方面做任何工作,则应该采用UTC来完成,这是最佳做法。

    Instant instant = Instant.now(); 
    

您还可以调整即时到其他时区:在纳秒使用即时类获得当前时刻。应用ZoneId对象以获取ZonedDateTime。

ZoneId zid = ZoneId.of("Europe/Paris"); //create zone id 
ZonedDateTime zdt = instant.atZone(zid); //pass zone id get the adjusted zoned date time. 
  • LocalDate - 这个类表示没有时间一天和不同时区的日期,唯一的价值。

    ZoneId zid = ZoneId.of("Europe/Paris"); 
    LocalDate today = LocalDate.now(zid); //Always pass in a time zone 
    
+3

请不要向年轻人讲授过时课程“日期”和“日历”,至少不是第一个选项,也不是没有警告或保留。 “即时”,“LocalDate”,“ZonedDateTime”和朋友都好多了。 –

相关问题