2012-04-12 70 views
8

Làm cách nào để chúng tôi có thể cộng hoặc trừ ngày trong java? Ví dụ: java.sql.Date và được định dạng như sau: yyyy-MM-dd, làm cách nào tôi có thể thêm 5 tháng từ đó? Tôi đã thấy trong một số hướng dẫn rằng họ đang sử dụng Calendar, chúng tôi có thể đặt ngày trên đó không? Hãy giúp tôi.Phép cộng và phép trừ ngày trong Java

Ví dụ: 2012-01-01 khi được thêm 5 tháng sẽ trở thành 2012-06-01.

PS: Tôi là một Lập trình viên .NET và từ từ học về môi trường Java.

Trả lời

12

Trước hết bạn phải chuyển đổi ngày String của bạn để java.util.Date, hơn bạn phải sử dụng để thao tác java.util.Calendar ngày. Nó cũng có thể làm toán với millis, nhưng tôi không khuyên bạn nên điều này.

public static void main(final String[] args) throws ParseException { 
    final String sdate = "2012-01-01"; 
    final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
    final Date date = df.parse(sdate); // conversion from String 
    final java.util.Calendar cal = GregorianCalendar.getInstance(); 
    cal.setTime(date); 
    cal.add(GregorianCalendar.MONTH, 5); // date manipulation 
    System.out.println("result: " + df.format(cal.getTime())); // conversion to String 
} 
2

Sử dụng Calendar

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.MONTH, 5); 
+0

Sir gì 'getInstance' làm gì? Làm thế nào tôi có thể đặt cal thành '2012-01-01'? –

+0

'getInstance()' là phương thức nhà máy nó sẽ khởi tạo lịch với ngày giờ hiện tại của hệ thống, bạn có thể sử dụng phương thức 'setTime()' để đặt ngày bất kỳ, xem java doc –

4

Xóa rõ ràng lớp Ngày được xây dựng cho phép tính ngày tháng. Hãy xem JodaTime, trong đó có một API tốt hơn nhiều cho loại điều này.

0

Hoặc, Chuyển đổi ngày thành thời gian bằng milis. Làm toán, và chuyển đổi millis trở lại một ngày.

1

Để chuyển đổi một ngày đến một Lịch, sử dụng:

Date date = your_date_here; 

Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 

Sau đó sử dụng các chức năng lịch số học thêm/trừ:

cal.add(Calendar.MONTH, 5); 
0

sử dụng CalenderUtils từ gói google của GWT.

import com.google.gwt.user.datepicker.client.CalendarUtil; 

...

//now 
Date d = new Date(); 
// Now + 2 months 
CalendarUtil.addMonthsToDate(d, 2); 
+3

Đề xuất thêm 5 tháng vào một ngày là thế nào để thêm toàn bộ GWT vào một dự án? – dty

0

Một lựa chọn khác là lớp DateUtils từ bên thứ 3 Apache Commons bộ sưu tập thư viện. Ví dụ:

Date d = DateUtils.parseDate("2012-01-01", "yyyy-MM-dd"); 
Date d2 = DateUtils.addMonths(d, 5); 
System.out.println("Old date + 5 months = " + d2); 
-1

hoàn chỉnh chương trình mà ngày Ngoài ra là trong http://dwbitechguru.blogspot.ca/2014/09/jave-program-to-add-or-substract-dates.html

+0

Điều gì sẽ xảy ra nếu liên kết bị hỏng !! – Parixit

+1

như @Parixit đã chỉ ra, thông thường chúng tôi cố gắng giải thích các đường liên kết lớn như vậy. Nếu liên kết đi xuống, câu trả lời của bạn sẽ trở thành vô ích cho cộng đồng. Nếu bạn có thể chỉnh sửa nó để thêm các phần quan trọng, nó sẽ làm cho một câu trả lời hợp lệ :) thx ^^ – Patrice

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