使用Calendar安装Java的日期

时间:2013-08-20 07:49:15

标签: java

我想知道是否存在包含Java中所有工作日的现有枚举。我正在使用Calendar来处理时间逻辑,但我没有看到这样的东西(我可以自己创建它,但我宁愿使用现有的东西)。我也看到了threeten project,但它仍处于alpha状态。由于枚举文档中包含太阳的枚举是如此微不足道,因此我认为某些事情可能已经存在。有什么想法吗?

3 个答案:

答案 0 :(得分:8)

答案 1 :(得分:2)

在日历类中,有:

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Sunday.
 */
public final static int SUNDAY = 1;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Monday.
 */
public final static int MONDAY = 2;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Tuesday.
 */
public final static int TUESDAY = 3;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Wednesday.
 */
public final static int WEDNESDAY = 4;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Thursday.
 */
public final static int THURSDAY = 5;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Friday.
 */
public final static int FRIDAY = 6;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Saturday.
 */
public final static int SATURDAY = 7;

(来源:java.util.Calendar)

不是枚举,因为在JDK 1.1中引入Calendar时没有。

答案 2 :(得分:2)

麻烦的旧日期时间类如java.util.Calendar现在已经遗留下来,取而代之的是java.time类。

java.time.DayOfWeek枚举

Java现在包含java.time.DayOfWeek枚举。

传递此枚举的对象,而不仅仅是整数1-7,以使您的代码更加自我记录,提供类型安全性,并确保一系列有效值。

invoices.printReportForDayOfWeek( DayOfWeek.MONDAY );

根据ISO 8601标准,周一至周日的编号为1-7。

通过致电getDisplayName获取当天的本地化名称。

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;  // Or Locale.US, etc.

要跟踪一周中的多天,请使用EnumSetSet的实施)或EnumMapMap的实施)。

Set<DayOfWeek> weekend = EnumSet.of( DayOfWeek.SATURDAY , DayOfWeek.SUNDAY ) ;
…
Boolean todayIsWeekend = weekend.contains( LocalDate.now( ZoneId.of( "America/Montreal" ) ).getDayOfWeek() );

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date.Calendar和&amp; java.text.SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6&amp; ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuarter等。