Swift में स्ट्रिंग को तारीख में बदलें


136

मैं इस स्ट्रिंग "2016-04-14T10:44:00+0000"को एक में कैसे बदल सकता हूं NSDateऔर केवल वर्ष, महीना, दिन, घंटा रख सकता हूं ?

इसके Tबीच में वास्तव में दूर फेंकता है जो मैं तारीखों के साथ काम करते समय उपयोग किया जाता हूं।


आप सिर्फ साल, महीना, दिन, घंटा सही चाहते हैं?
मितुल मार्सनिया

जवाबों:


231
  • 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)

ISO8601DateFormatterIOS 10 / macOS 12 में पेश किए गए सुविधा फॉर्मेट पर भी विचार करें :

let isoDate = "2016-04-14T10:44:00+0000"

let dateFormatter = ISO8601DateFormatter()
let date = dateFormatter.date(from:isoDate)!

3
Z में "yyyy-MM-dd'T'HH: mm: ssZ" हल जो मेरे लिए काम नहीं कर रहा था
asheyla

मैं बस महीने और दिन चाहता हूं, लेकिन यह मेरे लिए काम नहीं कर रहा है
स्नेहा

@ स्नेहा अगर आप घंटा नहीं चाहते तो बस छोड़ .hour
दीजिए

@vadian मैंने किया लेकिन मुझे नहीं मिल रहा है
स्नेहा

1
सभी एक में: ISO8601DateFormatter ()। दिनांक (से: "आपका स्ट्रिंग")!
माइक इरविंग

38

निम्न दिनांक स्वरूप का प्रयास करें।

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)

10
इसकी कोशिश की, और इसके बाद तारीख वापसी शून्य।
असील्या

1
बलात्कार में प्रकार के मूल्य के प्रकार 'तिथि' 'स्ट्रिंग' कनवर्ट नहीं कर सकता
ऑलेक्ज़ेंडर

22

स्विफ्ट 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
}

16

स्विफ्ट 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
    }
}

9

नमस्ते आपके पास अलग टी प्रारूप है और फिर जैसा आप चाहते हैं उसे रूपांतरित करें

// 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!)

6

बस आपकी 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

4

वैश्विक कार्य करें

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



 

1
क्या आपको लगता है कि आपका इनपुट और आउटपुट समान हैं?
दीपक बढ़ई

2

स्विफ्ट 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 बजे


2

बस चरण 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)

1

स्विफ्ट 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")
}

1

मैं इस प्रारूप के साथ ही पागल हो रहा था।

समाधान नीचे देखें।

आपका स्ट्रिंग जो आपकी पीठ या किसी अन्य स्रोत से आया है:

    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

0

कृपया ऐसा करने के लिए 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 के 'लोकेल' को स्पष्ट रूप से सेट करना चाह सकते हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.