NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"];
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"];
NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
int numberOfDays = secondsBetween / 86400;
NSLog(@"There are %d days in between the two dates.", numberOfDays);
EDIT:
Ingat, NSDate
objek mewakili momen waktu yang tepat, objek tidak memiliki informasi zona waktu terkait. Saat Anda mengonversi string menjadi tanggal menggunakan mis. An NSDateFormatter
, waktu akan NSDateFormatter
diubah dari zona waktu yang dikonfigurasi. Oleh karena itu, jumlah detik antara dua NSDate
objek akan selalu zona waktu.
Lebih lanjut, dokumentasi ini menetapkan bahwa penerapan waktu Cocoa tidak memperhitungkan detik kabisat, jadi jika Anda memerlukan akurasi seperti itu, Anda perlu menggulirkan penerapan Anda sendiri.
cocoa
dan bukancocoa-touch
berarti jawaban ini hanya berlaku untuk Mac OS X.Anda mungkin ingin menggunakan sesuatu seperti ini:
Saya percaya metode ini memperhitungkan situasi seperti tanggal yang mencakup perubahan dalam penghematan siang hari.
sumber
NSDate
objek sudah agnostik zona waktu. Informasi zona waktu dihapus saat mengurai tanggal dengan misalnyaNSDateFormatter
, sehinggaNSDate
objek mewakili momen tepat dalam waktu. Oleh karena itu, jika Anda sudah memilikistartDate
danendDate
, kedua objek ini akan berjarak x jumlah detik. Zona waktu tidak ada hubungannya dengan itu.dimana
date1
dandate2
beradaNSDate
.Perhatikan juga definisi dari
NSTimeInterval
:sumber
Lihat ini. Ini menangani penghematan siang hari, tahun kabisat seperti yang digunakan kalender iOS untuk menghitung. Anda dapat mengubah string dan ketentuan untuk menyertakan menit dengan jam dan hari.
sumber
Dengan Swift 5 dan iOS 12, sesuai kebutuhan Anda, Anda dapat menggunakan salah satu dari dua cara berikut untuk menemukan perbedaan antara dua tanggal dalam hari.
# 1. Menggunakan
Calendar
'sdateComponents(_:from:to:)
metode# 2. Menggunakan
DateComponentsFormatter
'sstring(from:to:)
metodesumber
Swift 4
Coba ini dan lihat (rentang tanggal dengan String):
Cepat 3
sumber
Anda dapat menemukan perbedaannya dengan mengubah tanggal dalam detik dan mengambil interval waktu sejak 1970 untuk ini dan kemudian Anda dapat menemukan perbedaan antara dua tanggal.
sumber
Untuk menemukan perbedaannya, Anda perlu mendapatkan tanggal sekarang dan tanggal di masa depan. Dalam kasus berikut, saya menggunakan 2 hari untuk contoh tanggal yang akan datang. Dihitung oleh:
2 days
*24 hours
*60 minutes
*60 seconds
. Kami perkirakan jumlah detik dalam 2 hari menjadi 172.800.sumber