Bagaimana saya bisa mengubah string ini "2016-04-14T10:44:00+0000"
menjadi NSDate
dan hanya menyimpan tahun, bulan, hari, jam?
Di T
tengah-tengahnya benar-benar membuang apa yang saya terbiasa ketika bekerja dengan teman kencan.
Bagaimana saya bisa mengubah string ini "2016-04-14T10:44:00+0000"
menjadi NSDate
dan hanya menyimpan tahun, bulan, hari, jam?
Di T
tengah-tengahnya benar-benar membuang apa yang saya terbiasa ketika bekerja dengan teman kencan.
Jawaban:
Konversi string ISO8601 ke tanggal
let isoDate = "2016-04-14T10:44:00+0000"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!
Dapatkan komponen tanggal untuk tahun, bulan, hari dan jam dari tanggal
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date)
Terakhir, buat Date
objek baru dan hapus menit dan detik
let finalDate = calendar.date(from:components)
Pertimbangkan juga formatter kenyamanan yang ISO8601DateFormatter
diperkenalkan di iOS 10 / macOS 12:
let isoDate = "2016-04-14T10:44:00+0000"
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from:isoDate)!
.hour
Coba Format tanggal berikut.
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter. dateFromString (strDate)
Semoga ini bisa membantu ..
Swift 4.1:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter.date(from: strDate)
Di Swift 4.1 Anda dapat melakukan:
func getDate() -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = TimeZone.current
dateFormatter.locale = Locale.current
return dateFormatter.date(from: "2015-04-01T11:42:00") // replace Date String
}
Swift 3.0 - 4.2
import Foundation
extension String {
func toDate(withFormat format: String = "yyyy-MM-dd HH:mm:ss")-> Date?{
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tehran")
dateFormatter.locale = Locale(identifier: "fa-IR")
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = format
let date = dateFormatter.date(from: self)
return date
}
}
extension Date {
func toString(withFormat format: String = "EEEE ، d MMMM yyyy") -> String {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "fa-IR")
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tehran")
dateFormatter.calendar = Calendar(identifier: .persian)
dateFormatter.dateFormat = format
let str = dateFormatter.string(from: self)
return str
}
}
Hai Anda memiliki T Format yang terpisah dan kemudian mengonversi sesuka Anda
// create dateFormatter with UTC time format
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let date = dateFormatter.dateFromString("2015-04-01T11:42:00")
// change to a readable time format and change to local time zone
dateFormatter.dateFormat = "EEE, MMM d, yyyy - h:mm a"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
let timeStamp = dateFormatter.stringFromDate(date!)
Hanya melewati Anda dateformate
dan teman kencan Anda maka Anda dapatkan Year,month,day,hour
. Informasi tambahan
func GetOnlyDateMonthYearFromFullDate(currentDateFormate:NSString , conVertFormate:NSString , convertDate:NSString ) -> NSString
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = currentDateFormate as String
let formatter = NSDateFormatter()
formatter.dateFormat = Key_DATE_FORMATE as String
let finalDate = formatter.dateFromString(convertDate as String)
formatter.dateFormat = conVertFormate as String
let dateString = formatter.stringFromDate(finalDate!)
return dateString
}
Dapatkan Tahun
let Year = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "YYYY", convertDate: "2016-04-14T10:44:00+0000") as String
Dapatkan Bulan
let month = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "MM", convertDate: "2016-04-14T10:44:00+0000") as String
Dapatkan Hari
let day = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "dd", convertDate: "2016-04-14T10:44:00+0000") as String
Dapatkan Jam
let hour = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "hh", convertDate: "2016-04-14T10:44:00+0000") as String
membuat fungsi global
func convertDateFormat(inputDate: String) -> String {
let olDateFormatter = DateFormatter()
olDateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let oldDate = olDateFormatter.date(from: inputDate)
let convertDateFormatter = DateFormatter()
convertDateFormatter.dateFormat = "MMM dd yyyy h:mm a"
return convertDateFormatter.string(from: oldDate!)
}
Memanggil fungsi dan memberikan nilai di dalamnya
get_OutputStr = convertDateFormat(inputDate: "2019-03-30T05:30:00+0000")
dan di sini adalah output
Feb 25 2020 4:51 PM
Di swift4,
var Msg_Date_ = "2019-03-30T05:30:00+0000"
let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let dateFormatterPrint = DateFormatter()
dateFormatterPrint.dateFormat = "MMM dd yyyy h:mm a" //"MMM d, h:mm a" for Sep 12, 2:11 PM
let datee = dateFormatterGet.date(from: Msg_Date_)
Msg_Date_ = dateFormatterPrint.string(from: datee ?? Date())
print(Msg_Date_)
// output: - 30 Mar 2019 05:30 PM
cukup Langkah 1> dapatkan nilai String dari JSON atau dataSource
Langkah 2> buat variabel lokal dan tetapkan.
let startDate = CurrentDashBoard.startdate
Langkah 3> buat instance DateFormatter.
let dateFormatter = DateFormatter()
langkah 4> panggil dateFormat dari dateFormatter dan berikan tipe data tanggal yang disimpan.
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm:ss"("may be String formate")
langkah 5> Tetapkan variabel Lokal ke variabel ini untuk dikonversi.
let dateFromStringstartDate : NSDate = dateFormatter.date(from: startDate)! as NSDate
Langkah 6> berikan Tanggal yang Anda inginkan, Formate dengan kode berikut.
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
Langkah 6> Tetapkan ke label / teks
cell.lblStartDate.text = String(format: "%@", strstartDate)
Kode:
let startDate = CurrentDashBoard.startdate let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm:ss" let dateFromStringstartDate :
NSDate = dateFormatter.date(from: startDate)! as NSDate
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
let strstartDate = dateFormatter.string(from: dateFromStringstartDate as Date)
Swift 5. Untuk melihat JIKA TANGGAL TELAH BERLALU:
let expiryDate = "2020-01-10" // Jan 10 2020
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if Date() < dateFormatter.date(from: expiryDate) ?? Date() {
print("Not Yet expiryDate")
} else {
print("expiryDate has passed")
}
Saya jadi gila dengan format ini juga.
Lihat solusinya di bawah ini.
String Anda yang datang dari belakang atau sumber lain:
let isoDate = "2020-05-06 20:00:00-03"
Identifikasi format tanggal
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!
Sekarang Anda memiliki tanggal sebagai Tanggal (), Anda dapat mengubah ke format apa pun yang Anda inginkan menggunakan formatDate.string
let formatDate = DateFormatter()
formatDate.dateFormat = "dd/MM/yyyy HH:mm"
let drawDate = formatDate.string(from: date)
print(drawDate)
Keluaran:
06/05/2020 20:00
Silakan gunakan perpustakaan parsing ISO8601 untuk melakukan ini. Ada terlalu banyak cara bagaimana string dapat dikodekan. Jangan mengandalkan format tertentu dan jangan bergantung pada pengiriman server yang selalu sama. Masalahnya dimulai dengan 'Z' di bagian akhir dan itu akan meluas melalui semua varietas standar. Parsing perpustakaan akan menangani semua kasus dan akan selalu memberikan konversi yang aman - sedangkan string pemformatan tetap cenderung gagal di masa mendatang.
Anda bisa menggunakan salah satu perpustakaan ini. Mereka juga tersedia di CococaPods:
https://github.com/boredzo/iso-8601-date-formatter/
https://github.com/malcommac/SwiftDate
Lihatlah implementasinya. Keduanya panjang beberapa ratus baris - untuk alasan yang baik.
Berkenaan dengan pertanyaan: Anda dapat menarik komponen tanggal dari tanggal menggunakan NSDateComponents. Contoh di situs web mencakup persis kasus Anda.
https://developer.apple.com/documentation/foundation/nscalendar/1414841-components?language=objc
Perlu diketahui, bahwa mengonversi tanggal Anda akan mempertimbangkan zona waktu. Anda mungkin ingin mengatur 'lokal' dari NSCalendar secara eksplisit.