Saya tidak percaya ini akan memberi Anda jumlah jam yang pasti. Ini hanya akan memberi Anda nilai dari 0-24, di mana Anda harus mengandalkan komponen Hari, Bulan, dan Tahun untuk mendapatkan interval waktu penuh.
codeperson
Saya menguji ini, dan itu berfungsi dengan baik. Dengan fromDate 1 / Jan / 2012 dan toDate 4 / Jan / 2012 ini mengembalikan 96 jam.
Thomas Müller
memposting kode Anda Thomas? Itu tidak berhasil untuk beberapa orang.
John Riselvato
Jawaban:
171
The NSDate fungsi timeIntervalSinceDate: akan memberikan perbedaan dari dua tanggal dalam hitungan detik.
Dan apa yang terjadi jika tanggal / waktu melewati transisi untuk Daylight Savings?
Abizern
2
@Abizern: Terima kasih, saya tidak mempertimbangkan kasus-kasus itu ketika saya menjawab pertanyaan itu. Saya telah menautkan ke jawaban oleh ÐąrέÐέvil
Akusete
saya punya slot waktu seperti 4:50:30, h: m: si harus mengurangi waktu ini dari 12:30:20 bagaimana saya akan melakukan ini
Ubah komponen yang diperlukan menjadi hari, jam atau menit, perbedaan yang Anda inginkan. Jika NSDayCalendarUnitdipilih maka itu akan mengembalikan jumlah hari antara dua tanggal serupa untuk NSHourCalendarUnitdanNSMinuteCalendarUnit
Versi Swift 4
let cal =Calendar.current
let d1 =Date()let d2 =Date.init(timeIntervalSince1970:1524787200)// April 27, 2018 12:00:00 AMlet components = cal.dateComponents([.hour],from: d2, to: d1)let diff = components.hour!
Tidak, jangan lakukan ini. Tidak semua jam memiliki 3600 detik. Tidak semua hari memiliki 24 jam.
rmaddy
5
Ini sangat salah. Tidak memperhitungkan detik kabisat, penghematan waktu siang hari. Harap jangan menemukan kembali roda cukup gunakan API yang disediakan dengan iOS seperti NSDateComponents.
Juan Catalan
5
Pembayaran: Ini menangani penghematan siang hari, tahun kabisat karena menggunakan kalender iOS untuk menghitung. Anda dapat mengubah string dan ketentuan untuk menyertakan menit dengan jam dan hari.
itu tidak menunjukkan perbedaan lebih dari 12 jam. jika saya ingin memeriksa beberapa kondisi pada 23 jam, lalu bagaimana cara mendapatkan perbedaan antara waktu 23 jam?
Moxarth
Ini memberikan interval waktu yang salah, tidak bekerja untuk saya.
NSCalendar
's-components:fromDate:toDate:options:
metode.Jawaban:
The NSDate fungsi timeIntervalSinceDate: akan memberikan perbedaan dari dua tanggal dalam hitungan detik.
Lihat, perpustakaan referensi apel http://developer.apple.com/library/mac/navigation/ atau jika Anda menggunakan Xcode pilih saja bantuan / dokumentasi dari menu.
Lihat: cara-mengubah-an-nstimeinterval-detik-ke-menit
--edit: Lihat jawaban ÐąrέÐέvil di bawah untuk menangani dengan benar pergeseran waktu siang hari / detik kabisat
sumber
Ubah komponen yang diperlukan menjadi hari, jam atau menit, perbedaan yang Anda inginkan. Jika
NSDayCalendarUnit
dipilih maka itu akan mengembalikan jumlah hari antara dua tanggal serupa untukNSHourCalendarUnit
danNSMinuteCalendarUnit
Versi Swift 4
sumber
sumber
Pembayaran: Ini menangani penghematan siang hari, tahun kabisat karena menggunakan kalender iOS untuk menghitung. Anda dapat mengubah string dan ketentuan untuk menyertakan menit dengan jam dan hari.
sumber
Bagi yang menggunakan swift 3 ke atas,
sumber