用于在Java中保留时间和日期的类

时间:2017-07-19 19:20:25

标签: java class date time calendar

我正在构建一个简单的管理器应用程序,并尝试选择一个类来保持我的日期和时间在对象中。我应该使用哪些课程?我已经看到Date类中的许多方法都被弃用了。也许Calendar呢?推荐一下。感谢。

2 个答案:

答案 0 :(得分:2)

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html

如果您正在寻找没有时区的相当标准的格式:" ISO-8601日历系统中没有时区的日期时间,例如2007-12-03T10:15:30&#34 ;

答案 1 :(得分:2)

这取决于您想要的日期/时间。

  • System.currentTimeMillis() - 这将为您提供一个简单的数值,表示为UNIX纪元之后作为 long 的毫秒数。
  • 如果您想要年月日格式,可以使用以下格式之一:

    new Date() - 这将为您提供一个使用当前日期/时间初始化的Date对象。由于API方法存在很大缺陷,因此不推荐使用。

    new org.joda.time.DateTime() - 这会给你一个joda-time对象 用当前日期/时间初始化。 Joda-time包含一个很好的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 = Instant.now();
    

您还可以将Instant调整为其他时区。应用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