2016-08-03 66 views
-5

我試圖將NSString這樣的一個「2300」轉換爲NSDate格式。 (注意:23後沒有冒號)。將NSString(例如:「2300」)轉換爲NSDate(iOS)

我從外部Web服務獲取字符串。我需要以12小時的格式在我的應用中顯示這個時間。

謝謝:)

+0

「2300」 的輸出可以是任何東西。你是說這是一個24小時格式(hhmm)的時間,你想將它轉換爲NSDate,然後轉換爲12小時格式的時間字符串? –

+0

是..「2300」是24小時格式的時間 –

+0

您得到這種類型格式:下午11:00? –

回答

1

我加入這裏的三種類型,其中tyope你需要選擇

類型-1

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"HHmm"]; 
[formatter setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter setLocale:[NSLocale systemLocale]]; 
NSDate *date = [formatter dateFromString:@"2300"]; 
    [formatter setDateFormat:@"hh:mm"]; 
NSString *finalDate = [formatter stringFromDate:date]; 
NSLog(@"finalDate==%@",finalDate); 

類型-2

NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init]; 
[formatter1 setDateFormat:@"HHmm"]; 
[formatter1 setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter1 setLocale:[NSLocale systemLocale]]; 
NSDate *date1 = [formatter1 dateFromString:@"2300"]; 
[formatter1 setDateFormat:@"hhmm"]; 
NSString *finalDate1 = [formatter1 stringFromDate:date1]; 
NSLog(@"finalDate1==%@",finalDate1); 

Typ Ë-3

NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; 
[formatter2 setDateFormat:@"HHmm"]; 
[formatter2 setTimeZone:[NSTimeZone systemTimeZone]]; 
[formatter2 setLocale:[NSLocale systemLocale]]; 
NSDate *date2 = [formatter1 dateFromString:@"2300"]; 
[formatter2 setDateFormat:@"hh:mm a"]; 
NSString *finalDate2 = [formatter2 stringFromDate:date2]; 
NSLog(@"finalDate2==%@",finalDate2); 

你得到像

enter image description here

+0

你是否有解決方案 –

+0

這對我的作品感謝你。 :) –

+0

@AbbinVarghese - welcome –

0

如果我理解你正確地質疑,2300實際上是23:00,即晚上11點。 所以,首先你需要從字符串獲取日期,只有我能想到的與你得到的數據的方法是使用Substring

- (NSDate*) getDateFromweb:(NSString *)dateString 
{   
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
    [dateFormatter setLocale:[NSLocale systemLocale]]; 
    [dateFormatter setDateFormat:@"HHmm"]; 
    NSDate *date = [dateFormatter dateFromString:dateString]; 

    [dateFormatter setDateFormat:@"hh:mm a"]; 
    NSString *pmAm = [dateFormatter stringFromDate:date]; 

    return pmAm; 
} 

添加系統區域設置和時區的建議從abizern。 這也將不承擔datestring有4位

+0

這假設格式將始終爲4位數。此外,您不考慮時區或地區。 – Abizern

+0

@Abizern請不要期望答案通過100%的測試用例。它只是一個sudo代碼來獲得解決方案。它可以根據使用情況進行優化。 – Bonnie

+1

爲什麼不使用「HHmm」而不是「HH:mm」? –