SORU
21 Temmuz 2010, ÇARŞAMBA


Java iki tarih arasındaki gün farkı?

Bulamadımiki tarih arasındaki gün sayısıbir, rapor ve bir değil, mevcut tarih. Benim parçacığı :

  int age=calculateDifference(agingDate, today);

Burada, calculateDifference yöntem özel bir yöntemdir, agingDate today Date nesneler, sadece açıklama için. Java Forum Thread1 Thread 2 iki makaleleri takip ediyorum. Tek başına bir program gayet iyi çalışıyor. Benim mantık rapor okuma içine bu dahil, alışılmadık fark değerleri alıyorum.

Herkes bana yardımcı olabilir, neden oluyor ve bunu nasıl düzeltebilirim?

DÜZENLEME :

Bir çok Gün gerçek fark daha alıyorum...

public static int calculateDifference(Date a, Date b)
{
    int tempDifference = 0;
    int difference = 0;
    Calendar earlier = Calendar.getInstance();
    Calendar later = Calendar.getInstance();

    if (a.compareTo(b) < 0)
    {
        earlier.setTime(a);
        later.setTime(b);
    }
    else
    {
        earlier.setTime(b);
        later.setTime(a);
    }

    while (earlier.get(Calendar.YEAR) != later.get(Calendar.YEAR))
    {
        tempDifference = 365 * (later.get(Calendar.YEAR) - earlier.get(Calendar.YEAR));
        difference  = tempDifference;

        earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
    }

    if (earlier.get(Calendar.DAY_OF_YEAR) != later.get(Calendar.DAY_OF_YEAR))
    {
        tempDifference = later.get(Calendar.DAY_OF_YEAR) - earlier.get(Calendar.DAY_OF_YEAR);
        difference  = tempDifference;

        earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
    }

    return difference;
}

Şimdiden teşekkürler...

Not :

Ne yazık ki, cevap bu şekilde alamadım. Joda-time kütüphane yardımı ile this problem başardığım.

CEVAP
21 Temmuz 2010, ÇARŞAMBA


Kusurlu java yerine Joda Time mükemmel kütüphane kullanmanızı öneririm.açıklama.Tarih ve arkadaş. Sadece yazabilirsiniz

import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Days;

Date past = new Date(110, 5, 20); // June 20th, 2010
Date today = new Date(110, 6, 24); // July 24th 
int days = Days.daysBetween(new DateTime(past), new DateTime(today)).getDays(); // => 34

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • booba1234

    booba1234

    22 Temmuz 2006
  • Creavite

    Creavite

    8 Mart 2009
  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008