2013-08-20 70 views
6

Tôi muốn biết nếu có một enum hiện có chứa tất cả các ngày trong tuần trong Java. Tôi đang sử dụng Lịch để xử lý logic thời gian nhưng tôi không thấy bất cứ điều gì như thế này (tôi có thể tạo ra nó bản thân mình nhưng tôi muốn sử dụng một cái gì đó hiện có). Tôi cũng thấy các threeten project nhưng nó vẫn còn trong alpha. Kể từ khi một enum chứa ngày trong tuần là như vậy tầm thường nó được thể hiện bởi ánh nắng mặt trời trong tài liệu enum, tôi đã suy nghĩ một cái gì đó có thể đã tồn tại. Bất kỳ ý tưởng?Bao nhiêu ngày trong Java với Lịch

+1

Nếu bạn đang tìm kiếm một API thời gian và ngày sane, hãy xem tại http://www.joda.org/joda-time/ - nếu họ không có enum trong ngày, Tuy nhiên. Tại sao bạn lại cần có một cái? –

+0

@PhilippReichart Tôi muốn hiển thị các bảng trong JSP với một cột cho mỗi ngày. – fxm

+0

Vì vậy, đây là về i18n? – atamanroman

Trả lời

2

Trong lớp lịch, có:

/** 
* 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; 

(nguồn: java.util.Calendar)

Không một enum vì đã có không khi Lịch đã được giới thiệu trong JDK 1.1.

+0

Tôi biết rằng tôi có thể truy cập mỗi ngày. Những gì tôi muốn là một danh sách có chứa tất cả các ngày mà không cần phải tự tạo ra nó. Ngoài ra, tôi muốn có giá trị String, không phải int. – fxm

+0

@fxm, bạn nên tạo enum một mình nếu bạn muốn, nó sẽ không mất nhiều thời gian. Như đã nói, lớp 'Lịch' đã được giới thiệu trước khi enums được đưa vào Java – SpongeBobFan

+1

Tôi đoán tôi sẽ làm như vậy, nó chỉ là một cái gì đó kỳ lạ như thế này đã không tồn tại. – fxm

2

Các lớp ngày giờ phiền hà cũ như java.util.Calendar giờ đây được thừa kế, được thay thế bởi các lớp java.time.

java.time.DayOfWeek enum

Java hiện nay bao gồm các java.time.DayOfWeek enum.

Vượt qua các đối tượng của enum này chứ không phải chỉ là số nguyên 1-7 để làm cho mã của bạn tự tài liệu hơn, cung cấp loại an toàn và đảm bảo một loạt các giá trị hợp lệ.

invoices.printReportForDayOfWeek(DayOfWeek.MONDAY); 

Đánh số là 1-7 cho thứ Hai đến Chủ Nhật, theo tiêu chuẩn ISO 8601.

Nhận tên được bản địa hóa trong ngày bằng cách gọi getDisplayName.

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

Để theo dõi nhiều ngày trong tuần, sử dụng một EnumSet (thực hiện Set) hoặc EnumMap (thực hiện Map).

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

Về java.time

Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp ngày giờ phiền hà cũ như java.util.Date, .Calendar, & java.text.SimpleDateFormat.

Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển sang java.time.

Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích.

Hầu hết các chức năng java.time được back-chuyển đến Java 6 & 7 trong ThreeTen-Backport và tiếp tục thích nghi với Android trong ThreeTenABP.

Dự án ThreeTen-Extra mở rộng java.time với các lớp bổ sung. Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time. Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval, YearWeek, YearQuarter và hơn thế nữa.

Các vấn đề liên quan