2013-03-26 64 views
-3

我試圖讓我的移動應用程序的Web服務可以接受的格式的NSDate。該應用程序目前正在使用老一代設備(iPhone 3GS,4和iOS模擬器)上的2013-03-26 17:27:55格式輸出,其中12小時時間以格式爲5:27 PM的格式顯示在狀態欄中。這很好,而且這是我需要用於服務器的格式。如何根據NSLocale強制NSDate對象在24小時時間關閉時遵循特定格式?

當使用較新的設備(包括iPhone 4S和iPhone 5),12小時時間以格式5:27 p.m在狀態欄中出現時,出現問題。在這些設備上,應用以2013-03-26 05:27:55 PM的格式輸出。這裏的問題的總結:

Web service accepts yyyy-mm-dd HH:MM:ss 
iPhone 4 and earlier yyyy-mm-dd HH:MM:ss (correct) 
iPhone 4s and later yyyy-mm-dd HH:MM:ss AM/PM (incorrect and rejected) 

所以,我怎樣才能在4S輸出的日期,後來是在24小時格式時,24小時的時間是關在用戶的常規設置?

編輯:

我用下面的方法(NSDate *)getCurrentDate嘗試和修改的NSDate對象的格式。

NSDate *currentDateAndTime = [[NSDate alloc] init]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

NSLog(@"AM Symbol: %@", formatter.AMSymbol); 
NSLog(@"PM Symbol: %@", formatter.PMSymbol); 

NSString *dateString = [formatter stringFromDate:currentDateAndTime]; 
NSDate *date = [formatter dateFromString:dateString]; 

NSLog(@"currentDate: %@ currentDateString: %@", date, dateString); 

return [formatter dateFromString:[formatter stringFromDate:currentDateAndTime]]; 
+0

你是如何在當前的應用程序轉換的NSDate到的NSString? – Anupdas 2013-03-26 17:47:57

+1

您是否嘗試過使用NSDateFormatter? – 2013-03-26 17:51:51

+0

對於這樣的特定格式,您確實需要使用帶有指定格式字符串的NSDateFormatter。對於人類消費來說,這是令人不悅的,更喜歡默認設置。對於機器消耗來說,這是非常必要的。 – gaige 2013-03-26 17:52:49

回答

1

使用日期格式

- (NSString *)dateStringForWebService:(NSDate *)date 
{ 
    //If you call this often, you should cache the date formatter object 
    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"MM/dd/yy HH:mm:ss"]; 
    NSString * formattedDate = [dateFormatter stringFromDate:date]; 
    return formattedDate; 
} 
+0

嘿,我已經試過了。我的'getCurrentDate'方法在整個應用程序中將我的調用替換爲'[NSDate date]'。無論我做什麼,我都無法擺脫上午或下午。在NSDate對象中。我已經編輯了我的問題以包含'getCurrentDate'方法。 – 2013-03-27 14:39:12

+1

你的代碼返回一個NSDate對象 - **不是NSString對象**。在一個NSDate對象中,日期用一個浮點數來表示,它是1970年以來的秒數。*它沒有AM或PM的表示。*如果你想要一個基於NSDate的專門格式化的字符串,你必須使用NSDateFormatter。 – 2013-03-27 19:09:20

相關問題