2012-07-10 34 views
6

Xin chào tôi là người mới trong Android. Làm thế nào để có được tất cả các ngày giữa hai ngày trong Android.ngày kết hợp giữa hai ngày trong android

Ví dụ: Tôi có hai dây.
String first="2012-07-15";
String second="2012-07-21";

tôi chuyển đổi và nhận được số ngày từ chuỗi này.

DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df2 = new SimpleDateFormat("MMM dd");
String mydate = df2.format(df1 .parse(first));

Bằng cách này tôi nhận được cả ngày từ Chuỗi đầu tiên và thứ hai.

Bây giờ tôi cũng hiển thị tất cả các ngày giữa hai ngày này. Ai có thể giúp tôi để tìm thấy điều này.

+3

thể trùng lặp của [Làm thế nào tôi có thể tăng một ngày bằng một ngày trong Java?] (http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java) - Bạn có thể chạy số gia tăng trong vòng lặp để tạo chuỗi ngày. – assylias

Trả lời

24

tốt hơn là không sử dụng bất kỳ giá trị mã hóa nào trong tính toán ngày. chúng ta có thể dựa vào java Calendar phương pháp lớp học để làm nhiệm vụ này

xem mã

private static List<Date> getDates(String dateString1, String dateString2) 
{ 
    ArrayList<Date> dates = new ArrayList<Date>(); 
    DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd"); 

    Date date1 = null; 
    Date date2 = null; 

    try { 
     date1 = df1 .parse(dateString1); 
     date2 = df1 .parse(dateString2); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    Calendar cal1 = Calendar.getInstance(); 
    cal1.setTime(date1); 


    Calendar cal2 = Calendar.getInstance(); 
    cal2.setTime(date2); 

    while(!cal1.after(cal2)) 
    { 
     dates.add(cal1.getTime()); 
     cal1.add(Calendar.DATE, 1); 
    } 
    return dates; 
} 

và sử dụng nó như sau

List<Date> dates = getDates("2012-02-01", "2012-03-01"); 
    for(Date date:dates) 
     System.out.println(date); 
+0

Cảm ơn bạn rất nhiều bạn thân của nó làm việc. –

+0

vui vì tôi có thể giúp bạn – sunil

1
public class DummyWorks extends Activity 
{ 
static final long ONE_DAY = 24 * 60 * 60 * 1000L; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    getDatesBetween("03/23/2011","03/28/2011"); 
} 

public static void getDatesBetween(String startDate,String endDate) { 


    long from=Date.parse(startDate); 

    long to=Date.parse(endDate); 

    int x=0; 

    while(from <= to) { 
      x=x+1; 
      System.out.println ("Dates : "+new Date(from)); 
      from += ONE_DAY; 
    } 
    System.out.println ("No of Dates :"+ x); 


} 
} 
+0

Thêm mili giây vào ngày của bạn mang lại nguy cơ thất bại cao do tiết kiệm ánh sáng ban ngày và các thay đổi múi giờ kỳ lạ khác. – assylias

+0

cảm ơn @assylias, bây giờ tôi đã thử nghiệm it.its nhận được kết quả chính xác sau khi thay đổi "dài ONE_DAY" –

+0

hello @Ramkiran cảm ơn bạn đã trả lời. Nhưng tôi đã có lỗi tại 'long from = Date.parse (startDate);' mà nói rằng java.illegalArgumentException tại java.util.Date.parse. –

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