উত্তর:
আপডেট হয়েছে: 2018
স্ট্রিং টু ডেট
var dateString = "02-03-2017"
var dateFormatter = DateFormatter()
// This is important - we set our input date format to match our input string
// if the format doesn't match you'll get nil from your string, so be careful
dateFormatter.dateFormat = "dd-MM-yyyy"
//`date(from:)` returns an optional so make sure you unwrap when using.
var dateFromString: Date? = dateFormatter.date(from: dateString)
তারিখ থেকে স্ট্রিং
var formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
guard let unwrappedDate = dateFromString else { return }
//Using the dateFromString variable from before.
let stringDate: String = formatter.string(from: dateFromString)
আপডেট হয়েছে: 20 জুলাই 2017
স্ট্রিং টু এনএসডিট
var dateString = "02-03-2017"
var dateFormatter = DateFormatter()
// This is important - we set our input date format to match our input string
// if the format doesn't match you'll get nil from your string, so be careful
dateFormatter.dateFormat = "dd-MM-yyyy"
var dateFromString = dateFormatter.date(from: dateString)
স্ট্রিং থেকে এনএসডিট
var formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let stringDate: String = formatter.string(from: dateFromString)
আপডেট হয়েছে: 22 ই অক্টোবর 2015
স্ট্রিং টু এনএসডিট
var dateString = "01-02-2010"
var dateFormatter = NSDateFormatter()
// this is imporant - we set our input date format to match our input string
dateFormatter.dateFormat = "dd-MM-yyyy"
// voila!
var dateFromString = dateFormatter.dateFromString(dateString)
স্ট্রিং থেকে এনএসডিট
var formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let stringDate: String = formatter.stringFromDate(NSDate())
println(stringDate)
এনএসডিটিং-এ এনএসটিরিং
NSString *dateString = @"01-02-2010";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [dateFormatter dateFromString:dateString];
এনএসডিটকে এনএসএস স্ট্রিংয়ে রূপান্তর করুন:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSString *stringDate = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@", stringDate);
NSDate *dateFromString = [[NSDate alloc] init];
পরের লাইনে পয়েন্টারে নতুন মান নির্ধারণের কারণ কী ???
আপডেট আপডেট 2019 (সুইফট 4):
তার জন্য একটি Date
এক্সটেনশন তৈরি করে । এটি এর NSDataDetector
পরিবর্তে ব্যবহার করে NSDateFormatter
।
// Just throw at it without any format.
var date: Date? = Date.FromString("02-14-2019 17:05:05")
খুব উপভোগ্য, এটি "আগামীকাল 5 এ" এর মতো জিনিসগুলিও স্বীকৃতি দেয় ।
XCTAssertEqual(Date.FromString("2019-02-14"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("2019.02.14"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("2019/02/14"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("2019 Feb 14"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("2019 Feb 14th"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("20190214"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("02-14-2019"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("02.14.2019 5:00 PM"), Date.FromCalendar(2019, 2, 14, 17))
XCTAssertEqual(Date.FromString("02/14/2019 17:00"), Date.FromCalendar(2019, 2, 14, 17))
XCTAssertEqual(Date.FromString("14 February 2019 at 5 hour"), Date.FromCalendar(2019, 2, 14, 17))
XCTAssertEqual(Date.FromString("02-14-2019 17:05:05"), Date.FromCalendar(2019, 2, 14, 17, 05, 05))
XCTAssertEqual(Date.FromString("17:05, 14 February 2019 (UTC)"), Date.FromCalendar(2019, 2, 14, 17, 05))
XCTAssertEqual(Date.FromString("02-14-2019 17:05:05 GMT"), Date.FromCalendar(2019, 2, 14, 17, 05, 05))
XCTAssertEqual(Date.FromString("02-13-2019 Tomorrow"), Date.FromCalendar(2019, 2, 14))
XCTAssertEqual(Date.FromString("2019 Feb 14th Tomorrow at 5"), Date.FromCalendar(2019, 2, 14, 17))
যায়:
extension Date
{
public static func FromString(_ dateString: String) -> Date?
{
// Date detector.
let detector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.date.rawValue)
// Enumerate matches.
var matchedDate: Date?
var matchedTimeZone: TimeZone?
detector.enumerateMatches(
in: dateString,
options: [],
range: NSRange(location: 0, length: dateString.utf16.count),
using:
{
(eachResult, _, _) in
// Lookup matches.
matchedDate = eachResult?.date
matchedTimeZone = eachResult?.timeZone
// Convert to GMT (!) if no timezone detected.
if matchedTimeZone == nil, let detectedDate = matchedDate
{ matchedDate = Calendar.current.date(byAdding: .second, value: TimeZone.current.secondsFromGMT(), to: detectedDate)! }
})
// Result.
return matchedDate
}
}
আপডেট 2014:
তার জন্য একটি এনএসএসস্ট্রিং এক্সটেনশন তৈরি করুন ।
// Simple as this.
date = dateString.dateValue;
NSDataDetector ধন্যবাদ , এটি সম্পূর্ণ ফর্ম্যাট স্বীকৃতি দেয়।
'2014-01-16' dateValue is <2014-01-16 11:00:00 +0000>
'2014.01.16' dateValue is <2014-01-16 11:00:00 +0000>
'2014/01/16' dateValue is <2014-01-16 11:00:00 +0000>
'2014 Jan 16' dateValue is <2014-01-16 11:00:00 +0000>
'2014 Jan 16th' dateValue is <2014-01-16 11:00:00 +0000>
'20140116' dateValue is <2014-01-16 11:00:00 +0000>
'01-16-2014' dateValue is <2014-01-16 11:00:00 +0000>
'01.16.2014' dateValue is <2014-01-16 11:00:00 +0000>
'01/16/2014' dateValue is <2014-01-16 11:00:00 +0000>
'16 January 2014' dateValue is <2014-01-16 11:00:00 +0000>
'01-16-2014 17:05:05' dateValue is <2014-01-16 16:05:05 +0000>
'01-16-2014 T 17:05:05 UTC' dateValue is <2014-01-16 17:05:05 +0000>
'17:05, 1 January 2014 (UTC)' dateValue is <2014-01-01 16:05:00 +0000>
পার্ট eppz! কিট , বিভাগ দখল NSString + + EPPZKit.h GitHub থেকে।
মূল উত্তর 2013:
আপনি স্ট্রিংয়ে থাকা তারিখের ফর্ম্যাটটি সম্পর্কে নিশ্চিত (বা যত্ন নেবেন না), পার্সিং তারিখের জন্য এনএসডিটাডেেক্টর ব্যবহার করুন ।
//Role players.
NSString *dateString = @"Wed, 03 Jul 2013 02:16:02 -0700";
__block NSDate *detectedDate;
//Detect.
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:nil];
[detector enumerateMatchesInString:dateString
options:kNilOptions
range:NSMakeRange(0, [dateString length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{ detectedDate = result.date; }];
NSString
-> 2013-09-11 01:31:22 +0000
রূপান্তরিত হয় NSDate
->2013-09-11 13:31:22 +0000
XCTAssertEqual(Date.FromString("2013-09-11 01:31:22 +0000"), Date.FromCalendar(2013, 9, 11, 1, 31, 22))
মনে হচ্ছে
স্থির-ফর্ম্যাট তারিখগুলি ব্যবহার করার সময় আপনাকে তারিখ বিন্যাসের লোকেল সেট করতে হবে "en_US_POSIX"
।
ডেটা ফর্ম্যাটিং গাইড থেকে নেওয়া
আপনি যদি স্থির-বিন্যাসের তারিখগুলি নিয়ে কাজ করছেন, আপনার প্রথমে তারিখের ফর্ম্যাটরের লোকেলটি আপনার নির্দিষ্ট ফর্ম্যাটের জন্য উপযুক্ত কিছুতে সেট করা উচিত। বেশিরভাগ ক্ষেত্রেই বেছে নেওয়া সেরা লোকেল হল en_US_POSIX, এমন একটি লোকেল যা ব্যবহারকারী এবং সিস্টেমের উভয় পছন্দ নির্বিশেষে ইউএস ইংলিশ ফলাফল আনার জন্য বিশেষভাবে তৈরি করা হয়েছে । en_US_POSIX সময়েও অবিচ্ছিন্ন (যদি ভবিষ্যতে মার্কিন যুক্তরাষ্ট্রে, তারিখের বিন্যাসের পদ্ধতি পরিবর্তন করে তবে নতুন আচরণ প্রতিফলিত করার জন্য en_US পরিবর্তিত হবে, তবে en_US_POSIX হবে না), এবং প্ল্যাটফর্মগুলির মধ্যে (en_US_POSIX আইফোনে একই কাজ করে) ওএস যেমন এটি ওএস এক্সে করে এবং অন্যান্য প্ল্যাটফর্মগুলিতে যেমন হয়)।
3 বা তারপরে সুইফট করুন
extension Formatter {
static let customDate: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "dd/MM/yy"
return formatter
}()
static let time: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "HH:mm"
return formatter
}()
static let weekdayName: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "cccc"
return formatter
}()
static let month: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "LLLL"
return formatter
}()
}
extension Date {
var customDate: String {
return Formatter.customDate.string(from: self)
}
var customTime: String {
return Formatter.time.string(from: self)
}
var weekdayName: String {
return Formatter.weekdayName.string(from: self)
}
var monthName: String {
return Formatter.month.string(from: self)
}
}
extension String {
var customDate: Date? {
return Formatter.customDate.date(from: self)
}
}
ব্যবহার:
// this will be displayed like this regardless of the user and system preferences
Date().customTime // "16:50"
Date().customDate // "06/05/17"
// this will be displayed according to user and system preferences
Date().weekdayName // "Saturday"
Date().monthName // "May"
কাস্টম তারিখটি পার্স করা এবং তারিখটিকে একই স্ট্রিং ফর্ম্যাটে রূপান্তর করা:
let dateString = "01/02/10"
if let date = dateString.customDate {
print(date.customDate) // "01/02/10\n"
print(date.monthName) // customDate
}
এটি প্রয়োজনীয় হিসাবে কাস্টমাইজ করতে আপনি ব্যবহার করতে পারেন এমন সমস্ত উপাদান এখানে রয়েছে:
এনএসএসস্ট্রিং-এ কোনও বিভাগ যুক্ত করবেন না কেন?
// NSString+Date.h
@interface NSString (Date)
+ (NSDate*)stringDateFromString:(NSString*)string;
+ (NSString*)stringDateFromDate:(NSDate*)date;
@end
// NSString+Date.m
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSDate *date = [dateFormatter dateFromString:stringDate ];
[dateFormatter release];
+ (NSDateFormatter*)stringDateFormatter
{
static NSDateFormatter* formatter = nil;
if (formatter == nil)
{
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
}
return formatter;
}
+ (NSDate*)stringDateFromString:(NSString*)string
{
return [[NSString stringDateFormatter] dateFromString:string];
}
+ (NSString*)stringDateFromDate:(NSDate*)date
{
return [[NSString stringDateFormatter] stringFromDate:date];
}
// Usage (#import "NSString+Date.h") or add in "YOUR PROJECT".pch file
NSString* string = [NSString stringDateFromDate:[NSDate date]];
NSDate* date = [NSString stringDateFromString:string];
কোনও বছরের প্রতিনিধিত্ব করার জন্য "10" ব্যবহার করা ভাল নয় কারণ এটি 1910, 1810 ইত্যাদি হতে পারে etc. এর জন্য আপনার সম্ভবত 4 টি সংখ্যা ব্যবহার করা উচিত।
আপনি যদি তারিখটি পরিবর্তন করতে পারেন এমন কিছু
yyyymmdd
তারপরে আপনি ব্যবহার করতে পারেন:
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *date = [dateFormat dateFromString:dateStr];
// Convert date object to desired output format
[dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
dateStr = [dateFormat stringFromDate:date];
[dateFormat release];
// Convert string to date
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *date = [dateFormat dateFromString:dateStr];
// Convert Date to string
[dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
dateStr = [dateFormat stringFromDate:date];
[dateFormat release];
NSString *mystr=@"Your string date";
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [dateFormatter dateFromString:mystr];
Nslog(@"%@",now);
আপনি যদি নীচের কোডটি বিন্যাসটি সেট করতে চান:
NSString *dateString = @"01-02-2010";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is important - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];
Nslog(@"%@",[dateFormatter dateFromString:dateString]);
থেকে রূপান্তর করতে এই পদ্ধতি ব্যবহার করুন NSString
থেকে NSdate
:
-(NSDate *)getDateFromString:(NSString *)pstrDate
{
NSDateFormatter* myFormatter = [[NSDateFormatter alloc] init];
[myFormatter setDateFormat:@"dd/MM/yyyy"];
NSDate* myDate = [myFormatter dateFromString:pstrDate];
return myDate;
}
আজকাল কেউ যদি সুইফটে এই জাতীয় কিছু করতে আগ্রহী হন তবে আমার কোনও কিছু শুরু করা উচিত, যদিও এটি নিখুঁত নয়।
func detectDate(dateString: NSString) -> NSDate {
var error: NSError?
let detector: NSDataDetector = NSDataDetector.dataDetectorWithTypes(NSTextCheckingType.Date.toRaw(), error: &error)!
if error == nil {
var matches = detector.matchesInString(dateString, options: nil, range: NSMakeRange(0, dateString.length))
let currentLocale = NSLocale.currentLocale()
for match in matches {
match.resultType == NSTextCheckingType.Date
NSLog("Date: \(match.date.description)")
return match.date
}
}
return NSDate()
}
এনএসএসস্ট্রিংয়ের তারিখ
NSString *dateString = [NSString stringWithFormat:@"%@",[NSDate date]];
NSLog(@"string: %@",dateString ); //2015-03-24 12:28:49 +0000
এনএসডিটিং-এ এনএসটিরিং
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
NSDate *date = [formatter dateFromString:dateString];
NSLog(@"date: %@", date); //015-03-24 12:28:49 +0000
আপনি এটির জন্য এক্সটেনশনগুলি ব্যবহার করতে পারেন।
extension NSDate {
//NSString to NSDate
convenience
init(dateString:String) {
let nsDateFormatter = NSDateFormatter()
nsDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
// Add the locale if required here
let dateObj = nsDateFormatter.dateFromString(dateString)
self.init(timeInterval:0, sinceDate:dateObj!)
}
//NSDate to time string
func getTime() -> String {
let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "hh:mm"
//Can also set the default styles for date or time using .timeStyle or .dateStyle
return timeFormatter.stringFromDate(self)
}
//NSDate to date string
func getDate() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd, MMM"
return dateFormatter.stringFromDate(self)
}
//NSDate to String
func getString() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
return dateFormatter.stringFromDate(self)
}
}
কার্যকর করার সময় আসল কোডটি নীচের মত দেখাবে
var dateObjFromString = NSDate(dateString: cutDateTime)
var dateString = dateObjFromString.getDate()
var timeString = dateObjFromString.getTime()
var stringFromDate = dateObjFromString.getString()
কিছু ডিফল্ট পদ্ধতিও রয়েছে তবে আমি অনুমান করি যে এটি ডকুমেন্টেশন থেকে আপনি যে ফর্ম্যাটটি দিয়েছেন সেটির জন্য এটি কাজ না করে
-dateFromString(_:)
-stringFromDate(_:)
-localizedStringFromDate(_ date: NSDate,
dateStyle dateStyle: NSDateFormatterStyle,
timeStyle timeStyle: NSDateFormatterStyle) -> String
সেরা অনুশীলন হ'ল নিজেকে একটি সাধারণ শ্রেণি তৈরি করা যেখানে আপনি আপনার সমস্ত সাধারণ ব্যবহারের পদ্ধতি, প্রায় সমস্ত প্রকল্পে কার্যকর পদ্ধতি এবং সেখানে পাভন দ্বারা প্রস্তাবিত কোডটি যুক্ত করেন:
+ (NSDate *)getDateOutOfString:(NSString *)passedString andDateFormat:(NSString *)dateFormat{
NSString *dateString = passedString;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:dateFormat];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
return dateFromString;
}
.. এবং অন্যান্য সমস্ত দরকারী পদ্ধতির জন্য
এটি করে আপনি আপনার অ্যাপ্লিকেশনটির জন্য একটি পরিষ্কার পুনরায় ব্যবহারযোগ্য কোড তৈরি শুরু করেন। চিয়ার্স!
সুইফট ২.২ অনুসারে
আপনি স্ট্রিং থেকে সহজেই এনএসডিট এবং এনএসডিট থেকে স্ট্রিং পেতে পারেন। যেমন
প্রথম সেট তারিখ বিন্যাসক
let formatter = NSDateFormatter();
formatter.dateStyle = NSDateFormatterStyle.MediumStyle
formatter.timeStyle = .NoStyle
formatter.dateFormat = "MM/dd/yyyy"
এখন স্ট্রিং এবং বিপরীতে থেকে তারিখ পান।
let strDate = formatter.stringFromDate(NSDate())
print(strDate)
let dateFromStr = formatter.dateFromString(strDate)
print(dateFromStr)
এখন উপভোগ করুন।
এনএসডিটিং এনএসডিট বা এনএসডিট থেকে এনএসএসআরটিং
//This method is used to get NSDate from string
//Pass the date formate ex-"dd-MM-yyyy hh:mm a"
+ (NSDate*)getDateFromString:(NSString *)dateString withFormate:(NSString *)formate {
// Converted date from date string
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
[dateFormatter setDateFormat:formate];
NSDate *convertedDate = [dateFormatter dateFromString:dateString];
return convertedDate;
}
//This method is used to get the NSString for NSDate
//Pass the date formate ex-"dd-MM-yyyy hh:mm a"
+ (NSString *)getDateStringFromDate:(NSDate *)date withFormate:(NSString *)formate {
// Converted date from date string
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
[dateFormatter setDateFormat:formate];
NSString *convertedDate = [dateFormatter stringFromDate:date];
return convertedDate;
}
উপরের উদাহরণগুলি কেবল সুইফট 3.0+ এর জন্য লেখা হয় না
আপডেট - সুইফট 3.0+ - তারিখে স্ট্রিংয়ে রূপান্তর করুন
let date = Date() // insert your date data here
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" // add custom format if you'd like
var dateString = dateFormatter.string(from: date)
স্ট্রিং টু ডেট
var dateFormatter = DateFormatter()
dateFormatter.format = "dd/MM/yyyy"
var dateFromString: Date? = dateFormatter.date(from: dateString) //pass string here
তারিখ থেকে স্ট্রিং
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let newDate = dateFormatter.string(from: date) //pass Date here