সুইফটে স্ট্রিংকে ডেটে রূপান্তর করুন


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)

ISO8601DateFormatterআইওএস 10 / ম্যাকোস 12-তে প্রবর্তিত সুবিধার ফর্ম্যাটরটিও বিবেচনা করুন :

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

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

3
"yyyy-MM-dd'T'HH: মিমি: এসএসজেড" এর জেড আমার পক্ষে কী কাজ করছে না তা সমাধান করেছে
আশায়লা

আমি কেবল বছরের মাস এবং দিন চাই, তবে এটি আমার পক্ষে কাজ করছে না
স্নেহা

@ স্নেহা আপনি যদি সময়টি না চান তবে কেবল বাদ দিন.hour
ভাদিয়ান

@ ওয়েডিয়ান আমি করেছি কিন্তু আমি পাচ্ছি না
স্নেহা

1
সব মিলিয়ে: আইএসও 8601 তারিখ ফর্ম্যাটটার ()। তারিখ ("থেকে আপনার স্ট্রিং")!
মাইক ইরভিং

38

নিম্নলিখিত তারিখের ফর্ম্যাট ব্যবহার করে দেখুন।

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter. dateFromString (strDate)

আশা করি এটা সাহায্য করবে..

সুইফট ৪.১:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZ"
let date = dateFormatter.date(from: strDate)

10
এটি চেষ্টা করে দেখুন এবং তারিখটি এর পরে ফিরে আসবে না।
asheyla

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> জেএসএন বা ডেটা উত্স থেকে স্ট্রিংয়ের মানটি পান

পদক্ষেপ 2> একটি স্থানীয় ভেরিয়েবল তৈরি করুন এবং সেট করুন।

let startDate = CurrentDashBoard.startdate

পদক্ষেপ 3> ডেটফরম্যাটারের একটি উদাহরণ তৈরি করুন।

let dateFormatter = DateFormatter()

পদক্ষেপ 4> ডেট ফরম্যাট থেকে ডেট ফরম্যাটে কল করুন এবং সংরক্ষণের তারিখ ডেটা টাইপ সরবরাহ করুন।

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

সুইচ ৫. যদি কোনও তারিখ পাস করা হয় তবে তা দেখতে:

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 পার্সিং লাইব্রেরি ব্যবহার করুন। স্ট্রিংটি কীভাবে এনকোড করা যায় তার অনেকগুলি উপায় রয়েছে। একটি নির্দিষ্ট ফর্ম্যাটের উপর নির্ভর করবেন না এবং সর্বদা একই প্রেরণকারী সার্ভারের উপর নির্ভর করবেন না। সমস্যাগুলি শেষে 'জেড' দিয়ে শুরু হয় এবং এটি স্ট্যান্ডার্ডের সমস্ত ধরণের মাধ্যমে প্রসারিত হবে। একটি পার্সিং লাইব্রেরি সমস্ত ক্ষেত্রে পরিচালনা করবে এবং সর্বদা একটি নিরাপদ রূপান্তর সরবরাহ করবে - যেখানে একটি নির্দিষ্ট বিন্যাসের স্ট্রিং ভবিষ্যতে ব্যর্থ হওয়ার সম্ভাবনা রয়েছে।

আপনি এই লাইব্রেরির একটি ব্যবহার করতে পারেন। এগুলি কোকোপোডগুলিতেও পাওয়া যায়:

https://github.com/boredzo/iso-8601-date-formatter/

https://github.com/malcommac/SwiftDate

বাস্তবায়নগুলি একবার দেখুন। এগুলি উভয়ই কয়েকশ লাইনের দীর্ঘ - সঙ্গত কারণে।

প্রশ্নের সাথে সম্পর্কিত: আপনি এনএসডিটকম্পোন্টগুলি ব্যবহার করে তারিখ থেকে তারিখের উপাদানগুলি বের করতে পারেন। ওয়েবসাইটের উদাহরণটি হ'ল আপনার ক্ষেত্রে।

https://developer.apple.com/documentation/foundation/nscalendar/1414841-components?language=objc

দয়া করে সচেতন হন, আপনার তারিখকে রূপান্তর করা সময় অঞ্চলকে বিবেচনা করবে। আপনি সম্ভবত এনএসসিএলগ্র্যান্ডের 'লোকেল' সেট করতে চাইতে পারেন।


0

শুধু সুইফটারসুইফ্ট ব্যবহার করুন।

stringDate = "2020-04-26T08:56:17.987Z"
let date = Date(iso8601String: stringDate)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.