এনএসডিট ফরমেটার লোকেল "ফেচুর" মোকাবেলা করার সর্বোত্তম উপায় কী?


168

মনে হচ্ছে NSDateFormatterএটির একটি "বৈশিষ্ট্য" রয়েছে যা আপনাকে অপ্রত্যাশিতভাবে কামড়ায়: যদি আপনি একটি সাধারণ "স্থির" ফর্ম্যাট অপারেশন করেন যেমন:

NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyyMMddHHmmss"];
NSString* dateStr = [fmt stringFromDate:someDate];
[fmt release];

তারপরে এটি মার্কিন যুক্তরাষ্ট্রে কাজ করে এবং বেশিরভাগ লোকালগুলি UNTIL এর মধ্যে ... 24 ঘন্টা অঞ্চলে তাদের ফোনের সাথে সেট করে কেউ 12/24 ঘন্টাটির সেটিংসে 12 এ সেট করে Then তারপরে উপরের অংশটি "এএম" বা "প্রধানমন্ত্রী" এর দিকে নজর দেওয়া শুরু করে ফলাফলের স্ট্রিংয়ের সমাপ্তি।

(উদাহরণস্বরূপ, এনএসডিট ফরমেটার, আমি কি কিছু ভুল করছি বা এটি কোনও বাগ? )

(এবং https://developer.apple.com/library/content/qa/qa1480/_index.html দেখুন )

স্পষ্টতই অ্যাপল এটিকে "বিএডি" হিসাবে ঘোষণা করেছে - ব্রোকেন অ্যাস ডিজাইনড, এবং তারা এটি ঠিক করতে যাচ্ছেন না।

স্পষ্টতই স্পষ্টতই একটি নির্দিষ্ট অঞ্চলের জন্য সাধারণত তারিখের বিন্যাসের স্থানীয় অবস্থান নির্ধারণ করা হয়, সাধারণত মার্কিন যুক্তরাষ্ট্র, তবে এটি কিছুটা অগোছালো:

NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[df setLocale: loc];
[loc release];

অনসি-টোভিসে খুব খারাপ নয়, তবে আমি প্রায় দশটি ভিন্ন অ্যাপ্লিকেশন নিয়ে কাজ করছি এবং প্রথমটিতে আমি যা দেখছি তাতে এই দৃশ্যের 43 টি উদাহরণ রয়েছে।

সুতরাং কোনও ম্যাক্রো / ওভাররাইড শ্রেণীর জন্য কোনও চতুর ধারণা / কোডটি অস্পষ্ট করে না রেখে, সমস্ত কিছু পরিবর্তনের প্রচেষ্টাটিকে হ্রাস করতে হবে? (আমার প্রথম প্রবৃত্তিটি এনএসডিটফর্ম্যাটরটি এমন সংস্করণ দিয়ে ওভাররাইড করা যা init পদ্ধতিতে লোকেল সেট করে। দুটি লাইন পরিবর্তন করতে হবে - বরাদ্দ / আরআর লাইন এবং যুক্ত আমদানি))

যোগ করা হয়েছে

আমি এ পর্যন্ত এটি নিয়ে এসেছি - সমস্ত পরিস্থিতিতে কাজ করে বলে মনে হচ্ছে:

@implementation BNSDateFormatter

-(id)init {
static NSLocale* en_US_POSIX = nil;
NSDateFormatter* me = [super init];
if (en_US_POSIX == nil) {
    en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
}
[me setLocale:en_US_POSIX];
return me;
}

@end

অনুগ্রহ!

আমি মধ্য-দিন মঙ্গলবারের মধ্যে আমি দেখি সেরা (বৈধ) পরামর্শ / সমালোচনার প্রতি অনুদান দেব। [নীচে দেখুন - সময়সীমা বাড়ানো হয়েছে]]

হালনাগাদ

পুনরায় ওএমজেডের প্রস্তাব, আমি যা খুঁজেছি তা এখানে -

এখানে বিভাগ সংস্করণ - এইচ ফাইল:

#import <Foundation/Foundation.h>


@interface NSDateFormatter (Locale)
- (id)initWithSafeLocale;
@end

বিভাগ এম ফাইল:

#import "NSDateFormatter+Locale.h"


@implementation NSDateFormatter (Locale)

- (id)initWithSafeLocale {
static NSLocale* en_US_POSIX = nil;
self = [super init];
if (en_US_POSIX == nil) {
    en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
}
NSLog(@"Category's locale: %@ %@", en_US_POSIX.description, [en_US_POSIX localeIdentifier]);
[self setLocale:en_US_POSIX];
return self;    
}

@end

কোড:

NSDateFormatter* fmt;
NSString* dateString;
NSDate* date1;
NSDate* date2;
NSDate* date3;
NSDate* date4;

fmt = [[NSDateFormatter alloc] initWithSafeLocale];
[fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
dateString = [fmt stringFromDate:[NSDate date]];
NSLog(@"dateString = %@", dateString);
date1 = [fmt dateFromString:@"2001-05-05 12:34:56"];
NSLog(@"date1 = %@", date1.description);
date2 = [fmt dateFromString:@"2001-05-05 22:34:56"];
NSLog(@"date2 = %@", date2.description);
date3 = [fmt dateFromString:@"2001-05-05 12:34:56PM"];  
NSLog(@"date3 = %@", date3.description);
date4 = [fmt dateFromString:@"2001-05-05 12:34:56 PM"]; 
NSLog(@"date4 = %@", date4.description);
[fmt release];

fmt = [[BNSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
dateString = [fmt stringFromDate:[NSDate date]];
NSLog(@"dateString = %@", dateString);
date1 = [fmt dateFromString:@"2001-05-05 12:34:56"];
NSLog(@"date1 = %@", date1.description);
date2 = [fmt dateFromString:@"2001-05-05 22:34:56"];
NSLog(@"date2 = %@", date2.description);
date3 = [fmt dateFromString:@"2001-05-05 12:34:56PM"];  
NSLog(@"date3 = %@", date3.description);
date4 = [fmt dateFromString:@"2001-05-05 12:34:56 PM"]; 
NSLog(@"date4 = %@", date4.description);
[fmt release];

ফলাফল:

2011-07-11 17:44:43.243 DemoApp[160:307] Category's locale: <__NSCFLocale: 0x11a820> en_US_POSIX
2011-07-11 17:44:43.257 DemoApp[160:307] dateString = 2011-07-11 05:44:43 PM
2011-07-11 17:44:43.264 DemoApp[160:307] date1 = (null)
2011-07-11 17:44:43.272 DemoApp[160:307] date2 = (null)
2011-07-11 17:44:43.280 DemoApp[160:307] date3 = (null)
2011-07-11 17:44:43.298 DemoApp[160:307] date4 = 2001-05-05 05:34:56 PM +0000
2011-07-11 17:44:43.311 DemoApp[160:307] Extended class's locale: <__NSCFLocale: 0x11a820> en_US_POSIX
2011-07-11 17:44:43.336 DemoApp[160:307] dateString = 2011-07-11 17:44:43
2011-07-11 17:44:43.352 DemoApp[160:307] date1 = 2001-05-05 05:34:56 PM +0000
2011-07-11 17:44:43.369 DemoApp[160:307] date2 = 2001-05-06 03:34:56 AM +0000
2011-07-11 17:44:43.380 DemoApp[160:307] date3 = (null)
2011-07-11 17:44:43.392 DemoApp[160:307] date4 = (null)

ফোনটি [একটি আইপড টাচ] গ্রেট ব্রিটেনে সেট করা আছে, 12/24 স্যুইচটি 12 এ সেট করা আছে the দুটি ফলাফলের মধ্যে একটি স্পষ্ট পার্থক্য রয়েছে এবং আমি বিভাগের সংস্করণটিকে ভুল বলে বিচার করি। নোট করুন যে বিভাগের সংস্করণে লগটি কার্যকর হচ্ছে (এবং কোডে রাখা স্টপগুলি আঘাত হানে), সুতরাং এটি কোনওভাবেই কোডটি ব্যবহার না হওয়ার ঘটনা নয়।

অনুদানের আপডেট:

যেহেতু আমি এখনও কোনও প্রযোজ্য উত্তর পাইনি তবে আমি বা দু'দিনের জন্য অনুগ্রহের সময়সীমা বাড়িয়ে দেব।

অনুগ্রহটি ২১ ঘন্টার মধ্যে শেষ হয় - যে কেউ আমার পক্ষে সবচেয়ে বেশি চেষ্টা করে সাহায্য করবে, এমনকি উত্তরটি আমার ক্ষেত্রে কার্যকর না হলেও।

একটি কৌতূহলী পর্যবেক্ষণ

বিভাগ বাস্তবায়ন সামান্য পরিবর্তিত:

#import "NSDateFormatter+Locale.h"

@implementation NSDateFormatter (Locale)

- (id)initWithSafeLocale {
static NSLocale* en_US_POSIX2 = nil;
self = [super init];
if (en_US_POSIX2 == nil) {
    en_US_POSIX2 = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
}
NSLog(@"Category's locale: %@ %@", en_US_POSIX2.description, [en_US_POSIX2 localeIdentifier]);
[self setLocale:en_US_POSIX2];
NSLog(@"Category's object: %@ and object's locale: %@ %@", self.description, self.locale.description, [self.locale localeIdentifier]);
return self;    
}

@end

মূলত কেবল স্ট্যাটিক লোকেলের ভেরিয়েবলের নাম পরিবর্তন করা হয়েছে (সাবক্লাসে ঘোষিত স্ট্যাটিকের সাথে কিছুটা বিরোধ দেখা দিলে) এবং অতিরিক্ত এনএসএলগ যুক্ত করেছে। তবে দেখুন কী সেই এনএসএলগ প্রিন্ট করে:

2011-07-15 16:35:24.322 DemoApp[214:307] Category's locale: <__NSCFLocale: 0x160550> en_US_POSIX
2011-07-15 16:35:24.338 DemoApp[214:307] Category's object: <NSDateFormatter: 0x160d90> and object's locale: <__NSCFLocale: 0x12be70> en_GB
2011-07-15 16:35:24.345 DemoApp[214:307] dateString = 2011-07-15 04:35:24 PM
2011-07-15 16:35:24.370 DemoApp[214:307] date1 = (null)
2011-07-15 16:35:24.378 DemoApp[214:307] date2 = (null)
2011-07-15 16:35:24.390 DemoApp[214:307] date3 = (null)
2011-07-15 16:35:24.404 DemoApp[214:307] date4 = 2001-05-05 05:34:56 PM +0000

আপনি দেখতে পাচ্ছেন, সেটলোকলটি সহজভাবে করেন নি। বিন্যাসটির লোকেল এখনও en_GB। এটি প্রদর্শিত হয় যে কোনও বিভাগে একটি init পদ্ধতি সম্পর্কে কিছু "অদ্ভুত" রয়েছে।

চূড়ান্ত উত্তর

দেখুন গৃহীত উত্তর নিচে।


5
মোশে, কেন আপনি শিরোনাম সম্পাদনা করতে বেছে নিয়েছেন তা আমি জানি না। "ফেচুর" শিল্পের একটি বৈধ শব্দ (এবং এটি 30 বছর বা তার বেশি সময় ধরে ছিল) যার অর্থ কোনও সফ্টওয়্যার এর এমন একটি দিক বা বৈশিষ্ট্য যা যথেষ্ট পরিমাণে অসুস্থ ধারণাযুক্ত একটি বাগ হিসাবে বিবেচিত হবে, যদিও লেখকরা এটি অস্বীকার করতে অস্বীকার করেছেন।
হট লিকস

1
একটি স্ট্রিংকে তারিখে রূপান্তর করার সময়, স্ট্রিংটি অবশ্যই ফর্ম্যাটারের বর্ণনার সাথে মিলে যায় - এটি আপনার স্থানীয় অঞ্চলে একটি স্পর্শকাতর সমস্যা।
bshirley

সঠিক এবং ভ্রান্ত সম্ভাব্য বিভিন্ন কনফিগারেশন পরীক্ষা করার জন্য বিভিন্ন তারিখের স্ট্রিং রয়েছে। আমি জানি যে ফর্ম্যাটিংয়ের স্ট্রিংটি দিয়ে তাদের মধ্যে কিছু অবৈধ।
হট লিক্স

আপনি বিভিন্ন মান ব্যবহার করে - (NSDateFormatterBehavior)formatterBehavior?
bshirley

এটি নিয়ে পরীক্ষা নিরীক্ষা হয়নি। আইওএস-এ এটি পরিবর্তন করা যায় কিনা তা নিয়েও এই অনুমানটি পরস্পরবিরোধী। মূল বিবরণটিতে বলা হয়েছে "আইওএস নোট: আইওএস কেবল 10.4+ আচরণকে সমর্থন করে", অন্যদিকে এনএসডিট ফরমেটার বিভাটি বিভাগে উভয় মোড পাওয়া যায় (তবে এটি কেবল ধ্রুবকগুলির বিষয়েই কথা বলছে)।
হট লিক্স

উত্তর:


67

Duh !!

কখনও কখনও আপনার একটি "আহা !!" মুহূর্ত, কখনও কখনও এটি একটি "দুহ !!" এটি পরেরটি। initWithSafeLocale"সুপার" এর জন্য বিভাগে initকোড করা হয়েছিল self = [super init];। এটি এর সুপারক্লাসকে inits করে NSDateFormatterতবে initএটি NSDateFormatterনিজেই আপত্তি করে না।

স্পষ্টতই যখন এই সূচনাটি এড়ানো হয় তখন setLocaleসম্ভবত "বস্তু বন্ধ" হয়ে যায়, সম্ভবত কারণ অবজেক্টে কিছু হারিয়ে যাওয়া ডেটা কাঠামোর কারণে। পরিবর্তন initকরার জন্য self = [self init];কারণ NSDateFormatterআরম্ভের ঘটতে, এবং setLocaleআবার খুশি হয়।

এখানে বিভাগের .m এর "চূড়ান্ত" উত্স রয়েছে:

#import "NSDateFormatter+Locale.h"

@implementation NSDateFormatter (Locale)

- (id)initWithSafeLocale {
    static NSLocale* en_US_POSIX = nil;
    self = [self init];
    if (en_US_POSIX == nil) {
        en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    }
    [self setLocale:en_US_POSIX];
    return self;    
}

@end

"এনএসএসটিং * ডেটএসটিআর = @" 2014-04-05T04: 00: 00.000Z "" এর তারিখ বিন্যাসকটি কী হবে; " ?
এজেন্ট চকস

@ এজেন্ট - এটি সন্ধান করুন: unicode.org/report/tr35/tr35-31/…
হট লিকস

@tbag - আপনার প্রশ্নটি এনএসডিট ফরমেটার সম্পর্কে হওয়া উচিত নয়?
হট লিকস

@ হটলিক্স হ্যাঁ আমার খারাপ। আমি এনএসডিট ফরমেটার মাংস।
tbag

@tbag - অনুমান কি বলে?
হট লিকস

41

সাবক্লাসিংয়ের পরিবর্তে, আপনি NSDateFormatterএকটি অতিরিক্ত প্রাথমিকের সাথে একটি বিভাগ তৈরি করতে পারেন যা লোকেল এবং সম্ভবত একটি ফর্ম্যাট স্ট্রিং নির্ধারণের যত্ন নেয়, সুতরাং এটি শুরু করার পরে আপনার কাছে ব্যবহারের জন্য প্রস্তুত বিন্যাসের ব্যবস্থা থাকবে।

@interface NSDateFormatter (LocaleAdditions)

- (id)initWithPOSIXLocaleAndFormat:(NSString *)formatString;

@end

@implementation NSDateFormatter (LocaleAdditions)

- (id)initWithPOSIXLocaleAndFormat:(NSString *)formatString {
    self = [super init];
    if (self) {
        NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
        [self setLocale:locale];
        [locale release];
        [self setFormat:formatString];
    }
    return self;
}

@end

তারপরে আপনি নিজের কোডটিতে যে NSDateFormatterকোনও জায়গায় স্রেফ ব্যবহার করতে পারেন :

NSDateFormatter* fmt = [[NSDateFormatter alloc] initWithPOSIXLocaleAndFormat:@"yyyyMMddHHmmss"];

নামের দ্বন্দ্ব এড়াতে আপনি কোনওভাবে নিজের বিভাগ পদ্ধতি উপসর্গ করতে চাইতে পারেন, কেবলমাত্র অ্যাপল ওএসের ভবিষ্যতের সংস্করণে এই জাতীয় পদ্ধতি যুক্ত করার সিদ্ধান্ত নিয়েছে।

আপনি যদি সর্বদা একই তারিখের ফর্ম্যাট (গুলি) ব্যবহার করেন তবে আপনি এমন শ্রেণিবদ্ধ পদ্ধতিও যুক্ত করতে পারেন যা নির্দিষ্ট কনফিগারেশনের (যেমন কিছু +sharedRFC3339DateFormatter) দিয়ে সিঙ্গলটন দৃষ্টান্ত ফেরত দেয় । তবে সচেতন থাকুন যা NSDateFormatterথ্রেড-নিরাপদ নয় এবং আপনি @synchronizedযখন একাধিক থ্রেড থেকে একই উদাহরণ ব্যবহার করছেন তখন আপনাকে লক বা ব্লক ব্যবহার করতে হবে।


একটি স্ট্যাটিক এনএসলোকেল (আমার পরামর্শ মত) একটি বিভাগে কাজ করবে?
হট লিক্স

হ্যাঁ, এটিও একটি বিভাগে কাজ করা উচিত। উদাহরণটি আরও সহজ করে তুলতে আমি এটি ছেড়ে দিয়েছি।
ওমজ

কৌতূহলজনকভাবে, বিভাগের পদ্ধতির কাজ হয় না। বিভাগ পদ্ধতিটি কার্যকর করা হয়েছে, এবং এটি অন্যান্য সংস্করণের মতো হুবহু লোকাল পাচ্ছে (আমি প্রথমে তাদেরকে আবার পিছনে পিছনে কার্যকর করব)। কেবল কোনওভাবে সেটলোকল দৃশ্যত "গ্রহণ" করে না।
হট লিকস

কেন এই পদ্ধতির কাজ হয় না তা খুঁজে পাওয়া আকর্ষণীয় হবে। যদি কেউ আরও ভাল কিছু না নিয়ে আসে তবে আমি এই আপাত বাগের সেরা ব্যাখ্যার জন্য অনুদানটি দেব।
হট লিক্স

ঠিক আছে, আমি ওএমজেডকে অনুগ্রহ দিচ্ছি, যেহেতু তিনিই একমাত্র তিনিই এই বিষয়ে আপাত চেষ্টা করেছিলেন।
হট লিক্স

7

আমি পুরোপুরি আলাদা কিছু প্রস্তাব দিতে পারি কারণ সত্যি বলতে কি এই সমস্ত কিছু কিছুটা খরগোশের ছিদ্রের নিচে চলছে।

আপনি সেট NSDateFormatterসহ একটি ব্যবহার করা উচিত dateFormatএবং তারিখগুলি পাওয়ার জন্য localeবাধ্য করা উচিত en_US_POSIX(সার্ভার / এপিআই থেকে)।

তারপরে আপনার NSDateFormatterইউআই এর জন্য আলাদা ব্যবহার করা উচিত যা আপনি timeStyle/ dateStyleবৈশিষ্ট্যগুলি সেট করবেন - এইভাবে আপনি dateFormatনিজের দ্বারা সুস্পষ্ট সেট রাখছেন না , এইভাবে ভ্রান্তভাবে ধরে নিবেন যে সেই বিন্যাসটি ব্যবহৃত হবে।

এর অর্থ হল ইউআই ব্যবহারকারীর পছন্দ অনুসারে চালিত হয় (am / pm বনাম 24 ঘন্টা, এবং তারিখের স্ট্রিংগুলি সঠিকভাবে ব্যবহারকারীর পছন্দ অনুসারে - আইওএস সেটিংস থেকে ফর্ম্যাট করা হয়), অন্যদিকে আপনার অ্যাপ্লিকেশনটিতে "আগত" তারিখগুলি সর্বদা একটি NSDateজন্য সঠিকভাবে "পার্স" হয় আপনি ব্যবহার।


কখনও কখনও এই প্রকল্প কাজ করে, কখনও কখনও না। একটি বিপত্তি হ'ল আপনার পদ্ধতিটি ফর্ম্যাটারের তারিখ বিন্যাসটি সংশোধন করার প্রয়োজন হতে পারে এবং এটি করার সময়, তারিখের ফর্ম্যাটিং অপারেশনগুলির মাঝামাঝি সময়ে যখন আপনাকে ফোন করেছিল সেট দ্বারা সেট করা ফর্ম্যাটটি পরিবর্তন করতে পারে। অন্যান্য পরিস্থিতি রয়েছে যেখানে সময় অঞ্চলটি বারবার পরিবর্তন করতে হবে।
হট লিক্স

আমি জানি না কেন timeZoneফর্ম্যাটারের মান পরিবর্তনের ফলে এই স্কিমটি আসবে, আপনি কী ব্যাখ্যা করতে পারেন? পরিষ্কার করার জন্য আপনি ফর্ম্যাট পরিবর্তন করা থেকে বিরত থাকবেন। আপনার যদি এটির দরকার হয় তবে এটি একটি "আমদানি" ফর্ম্যাটারে ঘটবে, সুতরাং একটি পৃথক বিন্যাসক।
ড্যানিয়েল

আপনি যে কোনও সময় কোনও বিশ্বব্যাপী অবস্থার পরিবর্তন করছেন তা বিপজ্জনক। ভুলে যাওয়া সহজ যে অন্যরাও এটি ব্যবহার করছে।
হট লিক্স

3

এই সমস্যাটির সমাধানটি সুইফ্ট সংস্করণে এখানে দেওয়া হল। দ্রুতগতিতে আমরা বিভাগের পরিবর্তে এক্সটেনশন ব্যবহার করতে পারি। সুতরাং, আমি এখানে তারিখ ফর্ম্যাটারের জন্য এক্সটেনশন তৈরি করেছি এবং তার মধ্যেই ইনটুইথস্যাফলোক্যাল প্রাসঙ্গিক লোকেলের সাথে তারিখ ফর্ম্যাটর প্রদান করে, এখানে আমাদের ক্ষেত্রে যা en_US_POSIX, এছাড়াও এটি ছাড়াও বেশ কয়েকটি তারিখ গঠনের পদ্ধতি সরবরাহ করা হয়েছে।

  • সুইফট 4

    extension DateFormatter {
    
    private static var dateFormatter = DateFormatter()
    
    class func initWithSafeLocale(withDateFormat dateFormat: String? = nil) -> DateFormatter {
    
        dateFormatter = DateFormatter()
    
        var en_US_POSIX: Locale? = nil;
    
        if (en_US_POSIX == nil) {
            en_US_POSIX = Locale.init(identifier: "en_US_POSIX")
        }
        dateFormatter.locale = en_US_POSIX
    
        if dateFormat != nil, let format = dateFormat {
            dateFormatter.dateFormat = format
        }else{
            dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        }
        return dateFormatter
    }
    
    // ------------------------------------------------------------------------------------------
    
    class func getDateFromString(string: String, fromFormat dateFormat: String? = nil) -> Date? {
    
        if dateFormat != nil, let format = dateFormat {
            dateFormatter = DateFormatter.initWithSafeLocale(withDateFormat: format)
        }else{
            dateFormatter = DateFormatter.initWithSafeLocale()
        }
        guard let date = dateFormatter.date(from: string) else {
            return nil
        }
        return date
    }
    
    // ------------------------------------------------------------------------------------------
    
    class func getStringFromDate(date: Date, fromDateFormat dateFormat: String? = nil)-> String {
    
        if dateFormat != nil, let format = dateFormat {
            dateFormatter = DateFormatter.initWithSafeLocale(withDateFormat: format)
        }else{
            dateFormatter = DateFormatter.initWithSafeLocale()
        }
    
        let string = dateFormatter.string(from: date)
    
        return string
    }   }
  • ব্যবহারের বিবরণ:

    let date = DateFormatter.getDateFromString(string: "11-07-2001”, fromFormat: "dd-MM-yyyy")
    print("custom date : \(date)")
    let dateFormatter = DateFormatter.initWithSafeLocale(withDateFormat: "yyyy-MM-dd HH:mm:ss")
    let dt = DateFormatter.getDateFromString(string: "2001-05-05 12:34:56")
    print("base date = \(dt)")
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    let dateString = dateFormatter.string(from: Date())
    print("dateString = " + dateString)
    let date1 = dateFormatter.date(from: "2001-05-05 12:34:56")
    print("date1 = \(String(describing: date1))")
    let date2 = dateFormatter.date(from: "2001-05-05 22:34:56")
    print("date2 = \(String(describing: date2))")
    let date3 = dateFormatter.date(from: "2001-05-05 12:34:56PM")
    print("date3 = \(String(describing: date3))")
    let date4 = dateFormatter.date(from: "2001-05-05 12:34:56 PM")
    print("date4 = \(String(describing: date4))")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.