2016-01-19 28 views
1

我在iPhone應用程序中遇到了一個問題。格式爲'hh:mm a'的NSDateFormatter dateFromString返回零

在我的應用程序

我轉換器具時間字符串到日期的那樣

NSString *time = @"01:30 PM"; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"hh:mm a"]; 
NSDate *date = [dateFormat dateFromString:time]; 

,由於某種原因一直date爲零[dateFormat dateFromString:time]後。

誰能告訴我我做錯了什麼?

感謝

+0

沒有它的正常工作輸出:2000-01-01 08:00:00 +0000 –

+0

你需要顯示什麼? –

+0

我有幾個格式爲hh:mm a的字符串,我需要在它們之間進行比較,所以我想將它們轉換爲NSDate進行比較 – user3414609

回答

1

我假設你的設備的語言是其他然後英語。在這種情況下,您需要設置日期格式化程序區域設置。試試這個代碼。

NSString *time = @"01:30 PM"; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"hh:mm a"]; 
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
+0

根據人的要求(控制檯輸出:2000-01-01 08:00:00 +0000)輸出不符合要求的格式,與上述註釋中已經提供的相同 – nikhil84

+0

非常感謝,Locale的缺失是我的問題 – user3414609

+0

@ user3414609 - 我沒有看到你的輸出如何改變區域使用。正如我剛剛運行你的代碼和沒有語言環境輸出一樣。 – nikhil84

0
NSString *dats1 = @"01:30:00 PM"; 
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init] ; 
    [dateFormatter1 setDateStyle:NSDateFormatterMediumStyle]; 
    [dateFormatter1 setDateFormat:@"HH:mm:ss"]; 
    NSDate *date = [dateFormatter1 dateFromString:dats1]; 
    NSLog(@"date : %@", date); 

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"hh:mm a"]; 
    NSLog(@"Current Date: %@", [formatter stringFromDate:date]); 
1

試試這個...

NSString *time = @"01:30 pm"; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setTimeStyle:NSDateFormatterShortStyle]; 
[dateFormat setDateFormat:@"hh:mm a"]; 
dateFormat.timeZone = [NSTimeZone timeZoneWithName:@"GMT"]; 
NSDate *date = [dateFormat dateFromString:time]; 

NSLog(@"date %@",[dateFormat stringFromDate:date]); 
相關問題