আমি কীভাবে এই স্ট্রিংটিকে "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
আইওএস 10 / ম্যাকোস 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)
আশা করি এটা সাহায্য করবে..
সুইফট ৪.১:
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> জেএসএন বা ডেটা উত্স থেকে স্ট্রিংয়ের মানটি পান
পদক্ষেপ 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)
সুইচ ৫. যদি কোনও তারিখ পাস করা হয় তবে তা দেখতে:
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 পার্সিং লাইব্রেরি ব্যবহার করুন। স্ট্রিংটি কীভাবে এনকোড করা যায় তার অনেকগুলি উপায় রয়েছে। একটি নির্দিষ্ট ফর্ম্যাটের উপর নির্ভর করবেন না এবং সর্বদা একই প্রেরণকারী সার্ভারের উপর নির্ভর করবেন না। সমস্যাগুলি শেষে 'জেড' দিয়ে শুরু হয় এবং এটি স্ট্যান্ডার্ডের সমস্ত ধরণের মাধ্যমে প্রসারিত হবে। একটি পার্সিং লাইব্রেরি সমস্ত ক্ষেত্রে পরিচালনা করবে এবং সর্বদা একটি নিরাপদ রূপান্তর সরবরাহ করবে - যেখানে একটি নির্দিষ্ট বিন্যাসের স্ট্রিং ভবিষ্যতে ব্যর্থ হওয়ার সম্ভাবনা রয়েছে।
আপনি এই লাইব্রেরির একটি ব্যবহার করতে পারেন। এগুলি কোকোপোডগুলিতেও পাওয়া যায়:
https://github.com/boredzo/iso-8601-date-formatter/
https://github.com/malcommac/SwiftDate
বাস্তবায়নগুলি একবার দেখুন। এগুলি উভয়ই কয়েকশ লাইনের দীর্ঘ - সঙ্গত কারণে।
প্রশ্নের সাথে সম্পর্কিত: আপনি এনএসডিটকম্পোন্টগুলি ব্যবহার করে তারিখ থেকে তারিখের উপাদানগুলি বের করতে পারেন। ওয়েবসাইটের উদাহরণটি হ'ল আপনার ক্ষেত্রে।
https://developer.apple.com/documentation/foundation/nscalendar/1414841-components?language=objc
দয়া করে সচেতন হন, আপনার তারিখকে রূপান্তর করা সময় অঞ্চলকে বিবেচনা করবে। আপনি সম্ভবত এনএসসিএলগ্র্যান্ডের 'লোকেল' সেট করতে চাইতে পারেন।