Date
nesne kendisi tarafından ilerlemek anlamına (eğer java.util.Date
demek varsayarak) Gün alanı, sadece bir "Unix Epoch'den beri milisaniye" değeri vardır. (. toString()
yöntem baskılar bu geçerli yerele bağlı olarak)
Yapmak istediğiniz ne bağlı olarak, prensip iki şekilde vardır:
hassas 24 saat verilen sonra" basitçe istiyorsanız tarih ", zaman değerine 1000 * 60 * 60 * 24 milisaniye ekleyebilirsiniz ve bunu ayarlayın. Eğer gün ışığından yararlanma saati arasında bir değişiklik varsa, eski tarihiniz 11:07 ve yeni saat 10:07 veya 12:07 (vardiya yönüne bağlı olarak) olabilir, ama yine de tam 24'tür. saat farkı. "sonraki takvim gününde aynı saatte" sahip olmak istiyorsanız MeBigFatGuy gösterdiğim gibi
private final static long MILLISECONDS_PER_DAY = 1000L * 60 * 60 * 24;
/**
* shift the given Date by exactly 24 hours.
*/
public static void shiftDate(Date d) {
long time = d.getTime();
time += MILLISECONDS_PER_DAY;
d.setTime(time);
}
, daha iyi bir Takvim'i kullanıyoruz. (Belki de yerel saat dilimi kullanılacak istemiyorsanız de bu getInstance()
yöntemini TimeZone vermek istiyorum.)
/**
* Shifts the given Date to the same time at the next day.
* This uses the current time zone.
*/
public static void shiftDate(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, 1);
d.setTime(c.getTimeInMillis());
}
Birden böyle tarih manipülasyonlar yapıyorsanız, daha iyi kullanılması doğrudan Takvim nesneyi tekrar ve tekrar Tarih ve Tarih dönüştürmek yerine.
sayılı tek yolu bugüne kadar 1 gün eklemektir. Nedeni: 31 Mayıs tarih alanını 1 arttırdığınızı varsayalım. Bunu 32 Mayıs yapalım mı? Oysa 1 gün eklerseniz, Java bununla ilgilenir. – Soumya
date.setTime (date.getTime() + 24 * 60 * 60 * 1000) 'gibi bir şey basit kirli bir çözümdür. – maaartinus
/Saat dilimi ile güncel bir tarih belirtilmemişse. – bestsss