SORU
24 HAZİRAN 2009, ÇARŞAMBA


Javascript ile tarih farkı (günün zaman göz ardı ediliyor)

Müşteriler kiralama kiralama ekipmanları süreye göre (gün olarak) karşı bir ücret nerede ekipman kiralama bir uygulama yazıyorum. Yani kısaca, (gün günlük ücret * sayısı) = toplam ücret.

İstemci tarafında anında geri bildirim için, iki Javascript takvim tarih farkı anlamak için kullanmaya çalışıyorum. Etrafta aradım ama bulduğum şey aradığım şey gayet basittir. Gördüğüm en çözümler genellikle

function dateDiff1(startDate, endDate) {
    return ((endDate.getTime() - startDate.getTime()) / 1000*60*60*24);
}

Benim sorunum ekipman teslim ve iade edilebilir . ben^>günün herhangi bir saatindeek bir ücret ile bu iki tarih boyunca. Yukarıdaki kodu takvim gün sayısını merak ediyorum ne zaman iki tarih arasındaki 24 saatlik dönem sayısını hesaplıyor.

Örneğin, eğer birisi kontrol ekipmanı at 6 Temmuz, 6 ve iade de 10 üzerinde 7 Temmuz, yukarıdaki kod olacağını hesaplamak için birden fazla 24 saatlik bir süre vardı geçti ve dönüş 2. İstenilen sonucu bir takvim tarihi geçtikten bu yana sadece 1, (7, 6 gibi).

Bulduğum en yakın çözüm bu işlevi vardır:

function dateDiff2(startDate, endDate) {
    return endDate.getDate() - startDate.getDate();
}

istediğim şey tam olarak, iki tarih aynı ay içinde olduğu sürece yok. Ancak, bu yana getDate() sadece döner gün ay (yani 1-31), işe yaramıyor tarihlerden span birden fazla ay (örneğin 31 Temmuz 1 Ağustos 1 gün, ama yukarıdaki calcuates 1 - 31 veya -29).

Güzel bir örnek için this post) çalışma gibi görünüyor. PHP arka uç, gregoriantojd kullanıyorum(), Ben sadece Javascript eşdeğer bir çözüm bulamıyorum.

Herkes herhangi bir fikir var mı?

CEVAP
20 Mart 2010, CUMARTESİ


Bütün öğrenci kamera kiralama örneğin gün isterseniz ...

function daysBetween(first, second) {

    // Copy date parts of the timestamps, discarding the time parts.
    var one = new Date(first.getFullYear(), first.getMonth(), first.getDate());
    var two = new Date(second.getFullYear(), second.getMonth(), second.getDate());

    // Do the math.
    var millisecondsPerDay = 1000 * 60 * 60 * 24;
    var millisBetween = two.getTime() - one.getTime();
    var days = millisBetween / millisecondsPerDay;

    // Round down.
    return Math.floor(days);
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CaptainDisillusion

    CaptainDisil

    18 EYLÜL 2007
  • Mega64

    Mega64

    24 ŞUBAT 2006
  • Troy Hunt

    Troy Hunt

    29 EYLÜL 2011