【问题标题】:How to get day of year number in Java for a specific date object? [duplicate]如何在 Java 中获取特定日期对象的年数? [复制]
【发布时间】:2013-09-24 11:55:38
【问题描述】:

假设您有一个包含日、月和年值的 Date 对象。

我想知道现在是哪一天。

我的意思是,例如 3 月 5 日是一年中的第 65 日。 或者就像 1 月 15 日是 15 日一样。

请不要约达时间。 (当前项目中未使用。)

【问题讨论】:

    标签: java date calendar


    【解决方案1】:

    你可以使用java提供的Calendar。使用get()方法和DAY_OF_YEAR你可以得到你想要的。

    例如:-

    Calendar cal = new GregorianCalendar();
    cal.setTime(new Date()); // Give your own date
    System.out.println(cal.get(Calendar.DAY_OF_YEAR));
    

    【讨论】:

      【解决方案2】:
      Calendar#get(Calendar.DAY_OF_YEAR);
      

      【讨论】:

      • 使用 java-doc 语法会让非 java 开发者感到困惑
      • @StanislavLevental 你是对的,但在这里,点 (.) 会产生误导,因为 get 不是静态的,而是一个实例方法。
      • @StanislavLevental,这是针对 Java 提出的。可能大多数阅读本文的人都是 Java 开发人员。
      【解决方案3】:

      tl;博士

      LocalDate.now( ZoneId.of( "America/Montreal" ) )  // Today's date in a particular time zone.
               .getDayOfYear()                          // Returns day-of-year (1-366).
      

      详情

      Calendar 类的其他答案已过时。 java.util.Datejava.util.Calendarjava.text.SimpleTextFormat 等麻烦的旧日期时间类现在是 legacy,被 java.time 类取代。

      使用 java.time

      LocalDate 类表示没有时间和时区的仅日期值。

      时区对于确定日期至关重要。对于任何给定的时刻,日期在全球范围内因区域而异。例如,Paris France 中午夜过后几分钟是新的一天,而 Montréal Québec 中仍然是“昨天”。

      continent/region 的格式指定proper time zone name,例如America/MontrealAfrica/CasablancaPacific/Auckland。切勿使用 3-4 个字母的缩写,例如 ESTIST,因为它们不是真正的时区,没有标准化,甚至不是唯一的 (!)。

      ZoneId z = ZoneId.of( "America/Montreal" );
      LocalDate today = LocalDate.now( z );
      

      2017-01-23

      我们可以问一年中的哪一天,即 1-366。

      int dayOfYear = today.getDayOfYear() ;
      

      23

      我们可以将 LocalDate 调整为一年中的特定日期。

      LocalDate ld = today.withDayOfYear( 187 ) ;
      

      2017-07-06

      看到这个code run live at IdeOne.com


      关于java.time

      java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

      Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

      要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

      从哪里获得 java.time 类?

      ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

      【讨论】:

        猜你喜欢
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        • 2018-09-13
        • 2023-02-16
        • 1970-01-01
        • 2021-11-03
        • 2020-02-16
        相关资源
        最近更新 更多