2012-04-27 22 views
6

Tôi muốn lấy ngày của một ngày cụ thể trong tuần, ví dụ: Wednessday. Ví dụ: Nếu ngày hôm nay là ngày thứ sáu 27, Wednessday sẽ là ngày 25.Ngày GWT tương đương với java.util.Calendar

tôi có thể đạt được điều này bằng cách

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); 
String thisWed = String.format("%tF%n", calendar) 

Thách thức ở đây là java.util.Calendar không được hỗ trợ ở phía client GWT, Có một giải pháp khả thi mà không cần phải di chuyển mã này để phía máy chủ?

Cảm ơn

+0

Bản sao trước http://stackoverflow.com/questions/ 7009655/how-to-use-java-util-calendar-in-gwt – cellepo

Trả lời

1

sử dụng DateTimeFormat, nó cho phép định dạng một java.util.Date vào chuỗi hoặc định dạng một chuỗi thành ngày.

Date date = new Date(); 
DateTimeFormat format = DateTimeFormat.getFormat("EEEE"); 
String day = format.parse(date); 
+2

Cảm ơn nhưng không trả lời câu hỏi của tôi. –

2

dễ nhất có lẽ sẽ là sử dụng Joda thời gian hoặc tương tự, nhưng tất cả các cổng GWT của JodaTime đã được abandonned: Date time library for gwt

Các performant nhất (không phụ thuộc bên thứ ba) sẽ làm việc tính bản thân:

Date d = new Date(); 
int dow = d.getDay(); 
int wed_delta = 3 - dow; 
wed = new Date(d.getTime() + (86400 * wed_delta)); 

(dòng cuối cùng có thể được thay thế bằng CalendarUtil.addDaysToDate(d, wed_delta), sửa đổi d tại chỗ)

+0

Hi thomas, Cái nhìn đầu tiên về logic của bạn, Có vẻ OK nhưng khi tôi chạy nó, tôi nhận được 'Fri Apr 27 18:25:48 CAT 2012'. Với mã của tôi ở trên, tôi sẽ nhận được 'Last Wednessday: 2012-04-25'. Tôi mong đợi để có được thứ tư cuối cùng của tuần đó của ngày mới(). –

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