2012-06-15 16 views
9

Olası Çoğalt:
Calculating the Difference Between Two Java Date InstancesJava'da iki tarih arasındaki gün sayısı nasıl alınır?

Nasıl Java iki tarih arasındaki gün sayısını alabilirim?

En iyi yol nedir?

public static ConcurrentHashMap<String, String> getWorkingDaysMap(int year, 
    int month, int day){ 
     int totalworkingdays=0,noofdays=0; 
     String nameofday = ""; 
     ConcurrentHashMap<String,String> workingDaysMap = 
      new ConcurrentHashMap<String,String>(); 
     Map<String,String> holyDayMap = new LinkedHashMap<String,String>(); 
     noofdays = findNoOfDays(year,month,day); 

     for (int i = 1; i <= noofdays; i++) { 
      Date date = (new GregorianCalendar(year,month - 1, i)).getTime(); 
      // year,month,day 
      SimpleDateFormat f = new SimpleDateFormat("EEEE"); 
      nameofday = f.format(date); 

      String daystr=""; 
      String monthstr=""; 

      if(i<10)daystr="0"; 
      if(month<10)monthstr="0"; 

      String formatedDate = daystr+i+"/"+monthstr+month+"/"+year; 

      if(!(nameofday.equals("Saturday") || nameofday.equals("Sunday"))){ 
       workingDaysMap.put(formatedDate,formatedDate); 
       totalworkingdays++; 
      } 
     } 

     return workingDaysMap; 
    } 

public static int findNoOfDays(int year, int month, int day) { 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(year, month - 1, day); 
     int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 
     return days; 
    } 
+2

Özellikle, bu cevap: http://stackoverflow.com/a/4549327/22656 –

cevap

22

Genellikle böyle bir şey yapmak:

final long DAY_IN_MILLIS = 1000 * 60 * 60 * 24; 

int diffInDays = (int) ((date1.getTime() - date2.getTime())/ DAY_IN_MILLIS); 

harici lib gerek yok, ve yeterince kolay


Güncelleme Burada var ama bu iyi değil şudur: Sadece "Tarihler" in de aradığını gördüm, benzer yöntem geçerlidir:

Tabii

, ben zor akım yol göremiyorum olsa


Güncelleme uygulamak için, hayatınızı biraz daha kolay hale getirebilir JODA zaman ya da diğer lib kullanarak: Önemli Not! , yalnızca gün ışığı tasarrufu veya benzer ayarlanmayan zaman dilimi için çalışır veya "gün içindeki fark" ifadesi aslında "24 saatlik ünitede fark" anlamına gelir

+2

Bu yaklaşımı kullanan kişiler için yalnızca bir hatırlatıcı, bu yalnızca gün ışığından yararlanma veya benzeri ayarlamalar yapmayan saat dilimi için çalışır. –

+0

Yanıtları orijinaline geri döndürdüm, çünkü bu cevaba yapılan düzenlemeler orijinal cevabımın bir parçası olmayan bir şey eklemektir ('TimeUnit.MILLISECONDS.toDays (date1.getTime() - date2.getTime()) Ben böyle bir düzenlemenin başka bir cevabın yerine başka bir kişinin varolan cevabını değiştirmekten daha iyi olduğunu düşünüyorum. –

+0

İlk yorumunuz gerçekten önemlidir. Yaz saati uygulamasında "date1" gerçekleştiğinde ve Daylight dışı saatlerde "date2" gerçekleştiğinde bu yaklaşım yanlış cevap verir. Bu nedenle, dünya üzerindeki gün ışığından yararlanan herhangi bir ülke için yanlıştır. –

İlgili konular