【发布时间】:2013-09-24 11:55:38
【问题描述】:
假设您有一个包含日、月和年值的 Date 对象。
我想知道现在是哪一天。
我的意思是,例如 3 月 5 日是一年中的第 65 日。 或者就像 1 月 15 日是 15 日一样。
请不要约达时间。 (当前项目中未使用。)
【问题讨论】:
假设您有一个包含日、月和年值的 Date 对象。
我想知道现在是哪一天。
我的意思是,例如 3 月 5 日是一年中的第 65 日。 或者就像 1 月 15 日是 15 日一样。
请不要约达时间。 (当前项目中未使用。)
【问题讨论】:
你可以使用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));
【讨论】:
Calendar#get(Calendar.DAY_OF_YEAR);
【讨论】:
get 不是静态的,而是一个实例方法。
LocalDate.now( ZoneId.of( "America/Montreal" ) ) // Today's date in a particular time zone.
.getDayOfYear() // Returns day-of-year (1-366).
Calendar 类的其他答案已过时。 java.util.Date、java.util.Calendar 和 java.text.SimpleTextFormat 等麻烦的旧日期时间类现在是 legacy,被 java.time 类取代。
LocalDate 类表示没有时间和时区的仅日期值。
时区对于确定日期至关重要。对于任何给定的时刻,日期在全球范围内因区域而异。例如,Paris France 中午夜过后几分钟是新的一天,而 Montréal Québec 中仍然是“昨天”。
以continent/region 的格式指定proper time zone name,例如America/Montreal、Africa/Casablanca 或Pacific/Auckland。切勿使用 3-4 个字母的缩写,例如 EST 或 IST,因为它们不是真正的时区,没有标准化,甚至不是唯一的 (!)。
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 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
从哪里获得 java.time 类?
ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如Interval、YearWeek、YearQuarter 和more。
【讨论】: