2014-04-16 73 views
1

在我的應用程序中,客戶端的要求是以12小時格式顯示時間。如果我的設備是不是24格式。但如果我將設備時間格式更改爲24小時格式,則mydate即將變爲零。這裏是我的代碼。如果iPhone/iPad採用24小時格式,將NSDate格式轉換爲NSDate時,NSDate即將到來

NSString *[email protected]"12-02-2012 11:12 PM"; 
NSDateFormatter *dtf = [[NSDateFormatter alloc] init]; 
[dtf setDateFormat:@"dd-MM-yyyy hh:mm a"]; 
NSDate *myDate=[dtf dateFromString:timeStr]; 

請給一個solution.I正在採取指明MyDate驗證日期選擇器的日期和我的應用程序提前,因爲零value.Thanks的崩潰。

+0

24小時格式如何可以am/pm。在[dtf setDateFormat:@「dd-MM-yyyy hh:mm a」];' – Rugmangathan

+0

中刪除'a'在我的應用程序中,我從服務器獲取時間並將其轉換爲12小時格式並將其顯示在標籤中。我只是想將日期字符串(標籤的文本)有12小時格式轉換爲NSDate.But我得到零,如果設備是在24小時FORMAT.If設備是在12小時格式,我能夠將其轉換爲NSDate .. – Leena

+0

MKR,我的日期字符串,即timeStr是12小時格式,而不是24小時。如果我刪除了[dtf setDateFormat:@「dd-MM-yyyy hh:mm a」],格式化程序如何知道日期字符串是12小時制格式?在設置dateFormat設置區域設置之前設置爲 – Leena

回答

2

我得到了我的解決方案,通過設置格式器的語言環境,我得到NSDate,如果設備是24小時格式。這裏是代碼。

NSString *[email protected]"12-02-2012 11:12 PM"; 
    NSDateFormatter *dtf = [[NSDateFormatter alloc] init]; 
    [dtf setDateFormat:@"dd-MM-yyyy hh:mm a"]; 
    [dtf setFormatterBehavior:NSDateFormatterBehaviorDefault]; 
    NSDate *datens= [[NSDate alloc]init]; 
    NSLocale *curentLocale = [NSLocale currentLocale]; 
    [dtf setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[curentLocale localeIdentifier]]];