Pada dasarnya, seperti judulnya. Saya ingin tahu bagaimana saya bisa menambahkan 1 hari ke NSDate
.
Jadi jika itu:
21st February 2011
Itu akan menjadi:
22nd February 2011
Atau jika itu:
31st December 2011
Itu akan menjadi:
1st January 2012.
objective-c
date
cocoa-touch
nsdate
Andrew
sumber
sumber
Jawaban:
Swift 5.0:
Sasaran C:
Ini harus jelas.
sumber
dateByAddingComponents
panggilan terakhir keNSCalendarOptions(rawValue: 0)
Karena iOS 8 dapat Anda gunakan
NSCalendar.dateByAddingUnit
Contoh dalam Swift 1.x:
Swift 2.0:
Swift 3.0:
sumber
date.add(.days, 1)
? * pergi dan membangun ekstensiextension Date { func adding(_ component: Calendar.Component, _ value: Int) -> Date? { return Calendar.current.date(byAdding: component, value: value, to: self) } }
penggunaanDate().adding(.day, 1) // "Jun 6, 2019 at 5:35 PM"
Diperbarui untuk Swift 5
Tujuan C
sumber
iOS 8+, OSX 10.9+, Objective-C
sumber
Sebuah bekerja pelaksanaan Swift 3 + berdasarkan highmaintenance ini jawaban dan vikingosegundo ini komentar. Ekstensi Tanggal ini juga memiliki opsi tambahan untuk mengubah tahun, bulan, dan waktu:
Penggunaan untuk hanya menambah satu hari seperti yang diminta OP akan menjadi:
sumber
let foo = Date().add([.calendar: 1, .yearForWeekOfYear: 3]
saya menambahkan solusi alternatif untuk jawaban saya. . Terima kasih atas saran Anda, @vikingosegundo!Swift 4.0 (sama seperti Swift 3.0 dalam jawaban yang luar biasa ini hanya menjelaskan untuk pemula seperti saya)
sumber
Gunakan fungsi di bawah ini dan gunakan parameter hari untuk mendapatkan tanggal hari. Kepala / hari
sumber
Dengan cepat
sumber
Ini berhasil!
sumber
Implementasi Swift 3.0 yang sangat sederhana adalah:
sumber
sumber
Cepat 4.0
Pemakaian
Catatan: Jika Anda tidak tahu mengapa baris kode diakhiri dengan tanda seru, cari "Swift Optionals" di Google.
sumber
Anda dapat menggunakan metode NSDate di
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
manaseconds
akan berada60 * 60 * 24 = 86400
sumber
Di Swift 2.1.1 dan xcode 7.1 OSX 10.10.5, Anda dapat menambahkan beberapa hari ke depan dan ke belakang menggunakan fungsi
panggilan fungsi untuk menambah tanggal saat ini sebanyak 9 hari
panggilan fungsi untuk tanggal saat ini pengurangan sebesar 80 hari
sumber
Berikut adalah metode tujuan umum yang memungkinkan Anda menambah / mengurangi segala jenis unit (Tahun / Bulan / Hari / Jam / Detik, dll.) Pada tanggal yang ditentukan.
Menggunakan Swift 2.2
sumber
Ok - saya pikir ini akan bekerja untuk saya. Namun, jika Anda menggunakannya untuk menambah hari ke 31 Maret 2013, itu akan mengembalikan tanggal yang hanya 23 jam ditambahkan ke dalamnya. Mungkin sebenarnya memiliki 24, tetapi menggunakan dalam perhitungan hanya 23:00 jam ditambahkan.
Demikian pula, jika Anda maju ke 28 Oktober 2013, kode menambahkan 25 jam sehingga menghasilkan waktu tanggal 2013-10-28 01:00:00.
Untuk menambah satu hari saya melakukan hal di atas, menambahkan:
Rumit, terutama karena penghematan siang hari.
sumber
60*60*24 + 1
karena detik kabisat. kurma harus mencakup semua ini, dan itulah sebabnya penanganan kurma sebenarnya hebat!sumber
Dengan cepat Anda dapat membuat ekstensi untuk menambahkan metode di NSDate
Anda dapat menggunakan ini sebagai
sumber
Pembaruan untuk Swift 4:
sumber
untuk swift 2.2:
Semoga ini bisa membantu seseorang!
sumber
Swift 4, jika yang Anda butuhkan adalah shift 24 jam (60 * 60 * 24 detik) dan bukan "1 hari kalender"
Masa depan:
let dayAhead = Date(timeIntervalSinceNow: TimeInterval(86400.0))
Lalu:
let dayAgo = Date(timeIntervalSinceNow: TimeInterval(-86400.0))
sumber
pembaruan untuk swift 5
sumber
sumber
Saya memiliki masalah yang sama; gunakan ekstensi untuk NSDate:
sumber
Swift 2.0
sumber
Di swift 4 atau swift 5, Anda bisa menggunakan seperti di bawah ini:
keluaran:
sumber
Ekstensi string: Konversi String_Date> Tanggal
Ekstensi tanggal: Konversi Tanggal> String
Ekstensi tanggal: Dapatkan +/- Tanggal
Pemakaian:
referensi: dari banyak pertanyaan
Bagaimana cara menambahkan 1 hari ke NSDate?
fungsi matematika untuk mengubah int positif ke negatif dan negatif ke positif?
Konversi NSString ke NSDate (dan kembali lagi)
sumber
Gunakan kode berikut:
Sebagai
sekarang sudah ditinggalkan.
sumber