Di bawah ini adalah metode yang saya tulis:
public List<Map<String, Object>> loadNotYetInEmployee(int shift, Date date,
int transitionVal, String type, User user) {
DateTime datetime = new DateTime(date);
datetime = datetime
.plus(Period.minutes(shiftTiming.getSession1InTime()));
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
sql = SqlMapUtils.getSql("attendance.attendancestatus.latein",
parameters);
result = getJdbcTemplate().queryForList(sql);
for (int i = 0; i < result.size(); i++) {
Date punchInTime = (Date) result.get(i).get("punchtime");
DateTime punchTime = new DateTime(punchInTime);
}
return result;
}
Sekarang dari metode saya, Anda dapat melihat saya memiliki objek Joda-Time DateTime di objek bernama datetime
dan dari hasil saya, saya mendapatkan satu cap waktu yang saya konversi menjadi jodatime punchTime
. Sekarang saya ingin mengetahui perbedaan antara dua tanggal ini, bagaimana saya melakukannya?
Days.daysBetween(d1, d2)
adalah tetangga teman AndaJawaban:
Ini akan memberi Anda perbedaan antara dua objek DateTime dalam milidetik:
sumber
Minutes.minutesBetween
.Sesuatu seperti...
Output yang mana
atau
Yang mungkin lebih dari apa yang Anda cari
sumber
LocalTime
), tapi saya sarankan Anda mengujinya dan lihat. Namun pertanyaannya adalah, di zona waktu mana nilai yang dihasilkan diwakili?Sesuatu seperti...
sumber
Dalam praktiknya saya pikir ini akan selalu memberikan hasil yang sama dengan jawaban berdasarkan
Duration
. Namun, untuk unit waktu yang berbeda dari menit, mungkin lebih tepat. Misalnya ada 365 hari dari 2016/2/2 hingga 2017/2/1, tetapi sebenarnya itu kurang dari 1 tahun dan harus dipotong hingga 0 tahun jika Anda menggunakannyaPeriodType.years()
.Secara teori hal yang sama dapat terjadi selama beberapa menit karena detik kabisat, tetapi Joda tidak mendukung detik kabisat.
sumber