मैं इस स्ट्रिंग "2016-04-14T10:44:00+0000"
को एक में कैसे बदल सकता हूं NSDate
और केवल वर्ष, महीना, दिन, घंटा रख सकता हूं ?
इसके T
बीच में वास्तव में दूर फेंकता है जो मैं तारीखों के साथ काम करते समय उपयोग किया जाता हूं।
मैं इस स्ट्रिंग "2016-04-14T10:44:00+0000"
को एक में कैसे बदल सकता हूं NSDate
और केवल वर्ष, महीना, दिन, घंटा रख सकता हूं ?
इसके T
बीच में वास्तव में दूर फेंकता है जो मैं तारीखों के साथ काम करते समय उपयोग किया जाता हूं।
जवाबों:
ISO8601 स्ट्रिंग को दिनांक में परिवर्तित करें
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)!
दिनांक से वर्ष, माह, दिन और घंटे के लिए दिनांक घटक प्राप्त करें
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date)
अंत में एक नई Date
वस्तु और स्ट्रिप मिनट और सेकंड बनाएं
let finalDate = calendar.date(from:components)
ISO8601DateFormatter
IOS 10 / macOS 12 में पेश किए गए सुविधा फॉर्मेट पर भी विचार करें :
let isoDate = "2016-04-14T10:44:00+0000"
let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from:isoDate)!
.hour
निम्न दिनांक स्वरूप का प्रयास करें।
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter. dateFromString (strDate)
आशा करता हूँ की ये काम करेगा..
स्विफ्ट 4.1:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter.date(from: strDate)
स्विफ्ट 4.1 में आप कर सकते हैं:
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
}
स्विफ्ट 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
}
}
नमस्ते आपके पास अलग टी प्रारूप है और फिर जैसा आप चाहते हैं उसे रूपांतरित करें
// 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!)
बस आपकी dateformate
और आपकी तारीख बीत रही है तो आप Year,month,day,hour
। अधिक जानकारी
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
}
वर्ष प्राप्त करें
let Year = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "YYYY", convertDate: "2016-04-14T10:44:00+0000") as String
महीना मिलता है
let month = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "MM", convertDate: "2016-04-14T10:44:00+0000") as String
दिन मिलता है
let day = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "dd", convertDate: "2016-04-14T10:44:00+0000") as String
घंटा मिलता है
let hour = self.GetOnlyDateMonthYearFromFullDate("yyyy-MM-dd'T'HH:mm:ssZ", conVertFormate: "hh", convertDate: "2016-04-14T10:44:00+0000") as String
वैश्विक कार्य करें
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!)
}
जिसे फंक्शन कहते हैं और उसमें वैल्यू पास करते हैं
get_OutputStr = convertDateFormat(inputDate: "2019-03-30T05:30:00+0000")
और यहाँ उत्पादन है
Feb 25 2020 4:51 PM
स्विफ्ट 4 में,
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_)
// आउटपुट: - 30 मार्च 2019 05:30 बजे
बस चरण 1> JSON या डेटा स्रोत से स्ट्रिंग मान प्राप्त करें
चरण 2> एक स्थानीय चर बनाएं और इसे असाइन करें।
let startDate = CurrentDashBoard.startdate
चरण 3> DateFormatter का एक उदाहरण बनाएँ।
let dateFormatter = DateFormatter()
चरण 4> dateFormat dateFormatter से कॉल करें और सहेजी गई दिनांक डेटा टाइप प्रदान करें।
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm:ss"("may be String formate")
चरण 5> कन्वर्ट करने के लिए इस चर के लिए स्थानीय चर असाइन करें।
let dateFromStringstartDate : NSDate = dateFormatter.date(from: startDate)! as NSDate
चरण 6> निम्नलिखित कोड द्वारा अपनी आवश्यक तिथि प्रदान करें।
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
चरण 6> इसे लेबल / पाठ को असाइन करें
cell.lblStartDate.text = String(format: "%@", strstartDate)
कोड:
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)
स्विफ्ट 5. यह देखने के लिए कि क्या दिनांकित है:
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")
}
मैं इस प्रारूप के साथ ही पागल हो रहा था।
समाधान नीचे देखें।
आपका स्ट्रिंग जो आपकी पीठ या किसी अन्य स्रोत से आया है:
let isoDate = "2020-05-06 20:00:00-03"
दिनांक प्रारूप की पहचान करें
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!
अब जब आपके पास दिनांक के रूप में दिनांक है () आप स्वरूपण का उपयोग करके अपने इच्छित प्रारूप में बदल सकते हैं
let formatDate = DateFormatter()
formatDate.dateFormat = "dd/MM/yyyy HH:mm"
let drawDate = formatDate.string(from: date)
print(drawDate)
आउटपुट:
06/05/2020 20:00
कृपया ऐसा करने के लिए ISO8601 पार्सिंग लाइब्रेरी का उपयोग करें। ऐसे कई तरीके हैं जिनसे स्ट्रिंग को एन्कोड किया जा सकता है। एक विशिष्ट प्रारूप पर भरोसा मत करो और हमेशा एक ही भेजने वाले सर्वर पर भरोसा मत करो। समस्याएं अंत में 'Z' से शुरू होती हैं और यह मानक की सभी किस्मों के माध्यम से विस्तारित होंगी। एक पार्सिंग लाइब्रेरी सभी मामलों को संभाल लेगी और हमेशा एक सुरक्षित रूपांतरण प्रदान करेगी - जबकि एक निश्चित स्वरूपण स्ट्रिंग भविष्य में विफल होने की संभावना है।
आप इनमें से किसी एक लाइब्रेरी का उपयोग कर सकते हैं। वे CococaPods पर भी उपलब्ध हैं:
https://github.com/boredzo/iso-8601-date-formatter/
https://github.com/malcommac/SwiftDate
कार्यान्वयन पर एक नज़र डालें। वे दोनों कई सौ लाइनें लंबी हैं - अच्छे कारण के लिए।
प्रश्न के संबंध में: आप NSDateCompords का उपयोग कर दिनांक से दिनांक घटकों को निकाल सकते हैं। वेबसाइट पर उदाहरण आपके मामले को बिल्कुल कवर करता है।
https://developer.apple.com/documentation/foundation/nscalendar/1414841-components?language=objc
कृपया ध्यान रखें, कि आपकी तिथि को परिवर्तित करने में समय क्षेत्र का ध्यान रखा जाएगा। आप NSCalendar के 'लोकेल' को स्पष्ट रूप से सेट करना चाह सकते हैं।