Bagaimana cara mengubah NSDate
cap waktu menjadi Unix? Saya telah membaca banyak posting yang melakukan kebalikannya. Tetapi saya tidak menemukan sesuatu yang berhubungan dengan pertanyaan saya.
ios
iphone
nsdate
unix-timestamp
neha
sumber
sumber
Sebuah Unix timestamp adalah jumlah detik sejak 00:00:00 UTC 1 Januari 1970. Ini diwakili oleh jenis time_t , yang biasanya ditandatangani 32-bit tipe integer (panjang atau int).
iOS menyediakan - (NSTimeInterval) timeIntervalSince1970 untuk objek NSDate yang mengembalikan jumlah detik sejak 00:00:00 GMT 1 Januari 1970. NSTimeInterval adalah tipe titik mengambang ganda sehingga Anda mendapatkan detik dan fraksi per detik.
Karena keduanya memiliki referensi yang sama (tengah malam 1Jan1970 UTC) dan keduanya mudah dalam konversi, konversikan NSTimeInterval menjadi time_t, pembulatan atau pemotongan tergantung pada kebutuhan Anda:
sumber
int unixTime = floor([piece.piece_last_view timeIntervalSince1970])
mana piece.piece.last_view adalah NSDateAnda dapat membuat tanggal cap waktu unix dari tanggal dengan cara ini:
sumber
CATATAN: - Stempel waktu harus dalam Zona UTC, Jadi saya mengonversi Waktu lokal kami ke Waktu UTC.
sumber
Cepat
Diperbarui untuk Swift 3
Catatan
timeIntervalSince1970
mengembalikanTimeInterval
, yang merupakan typealias untukDouble
.Jika Anda ingin pergi ke arah lain, Anda bisa melakukan yang berikut:
sumber
Jika Anda ingin menyimpan waktu ini dalam database atau mengirimkannya ke server ... yang terbaik adalah menggunakan cap waktu Unix. Berikut cuplikan kecil untuk mendapatkannya:
sumber
[[NSTimeZone systemTimeZone] secondsFromGMT]]
:? Tolong jelaskan sedikit.Cara pilihan saya adalah:
sumber
Sesuai saran @ kexik menggunakan fungsi waktu UNIX seperti di bawah ini:
Sesuai pengalaman saya - jangan gunakan timeIntervalSince1970, itu memberikan cap waktu zaman - jumlah detik Anda berada di belakang GMT.Dulu ada bug dengan [[tanggal NSDate] timeIntervalSince1970], itu digunakan untuk menambah / mengurangi waktu berdasarkan zona waktu telepon tetapi tampaknya sudah diatasi sekarang.
sumber
unixtime pertama 1532278070
unixtime kedua 1532278070.461380
unixtime ketiga 1532278070
sumber
Jika Anda membutuhkan cap waktu sebagai string.
sumber