2009-09-13 9 views
9

Tôi có một chương trình cần bắt đầu vào ngày 1/1/09 và khi tôi bắt đầu một ngày mới, chương trình của tôi sẽ hiển thị vào ngày hôm sau. Đây là những gì tôi có cho đến nay:thêm ngày vào một ngày

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1); 
SimpleDateFormat sdf = new SimpleDateFormat("d/M/yyyy"); 
public void setStart() 
{ 
    startDate.setLenient(false); 
    System.out.println(sdf.format(startDate.getTime())); 
} 

public void today() 
{ 
    newDay = startDate.add(5, 1); 
    System.out.println(newDay); 
//I want to add a day to the start day and when I start another new day, I want to add another day to that. 
} 

Tôi nhận được lỗi tìm thấy khoảng trống nhưng dự kiến ​​int, trong 'Newday = startDate.add (5, 1);' Tôi nên làm gì?

+3

Ba câu hỏi trong một vài giờ về ngày. Có lẽ là lúc để xem xét API trước. – camickr

Trả lời

18

Đối tượng Calendar có phương thức add cho phép một hoặc thêm giá trị của trường được chỉ định.

Ví dụ,

Calendar c = new GregorianCalendar(2009, Calendar.JANUARY, 1); 
c.add(Calendar.DAY_OF_MONTH, 1); 

Các hằng số để xác định lĩnh vực này có thể được tìm thấy trong "Dòng Tóm tắt" của lớp Calendar.

Chỉ để tham khảo trong tương lai, The Java API Specification chứa nhiều thông tin hữu ích về cách sử dụng các lớp học là một phần của API Java.


Cập nhật:

Tôi nhận được lỗi tìm thấy khoảng trống nhưng int mong đợi, trong 'Newday = startDate.add (5, 1);' Tôi nên làm gì ?

Phương thức add không trả lại bất kỳ điều gì, do đó, cố gắng gán kết quả gọi Calendar.add không hợp lệ.

Lỗi trình biên dịch cho biết rằng một người đang cố gắng chỉ định một void cho biến có loại int. Điều này không hợp lệ, vì người ta không thể gán "không có gì" cho biến số int.

Chỉ cần một đoán, nhưng có lẽ điều này có thể là những gì đang cố gắng đạt được:

// Get a calendar which is set to a specified date. 
Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1); 

// Get the current date representation of the calendar. 
Date startDate = calendar.getTime(); 

// Increment the calendar's date by 1 day. 
calendar.add(Calendar.DAY_OF_MONTH, 1); 

// Get the current date representation of the calendar. 
Date endDate = calendar.getTime(); 

System.out.println(startDate); 
System.out.println(endDate); 

Output:

Thu Jan 01 00:00:00 PST 2009 
Fri Jan 02 00:00:00 PST 2009 

Những gì cần phải được coi là những gì thực sự là Calendar.

A Calendar không phải là đại diện cho một ngày. Nó là một đại diện của một lịch, và nơi nó hiện đang trỏ đến. Để có được một đại diện của nơi mà lịch đang trỏ vào tại thời điểm này, người ta nên có được một Date từ Calendar bằng cách sử dụng phương pháp getTime.

+0

Tôi sắp nhập liên kết tới API! – vpram86

1

Nếu bạn có thể xoay nó theo yêu cầu, hãy chuyển tất cả ngày/giờ của bạn sang JODA, thư viện tốt hơn nhiều, với phần thưởng thêm rằng hầu hết mọi thứ đều không thay đổi, nghĩa là đa luồng xuất hiện miễn phí.