2011-11-03 61 views
1

我正在開發一款iPhone應用程序,可將圖片上傳到網絡服務器。這些圖片有時間在文件名中。由於它們可以從世界任何地方採集,所以我必須時刻關注時區和DST。我認爲我可以使用CFAbsoluteTimeGetCurrent,這不應該本地化([NSDate日期]返回本地化版本的時間,有或沒有「AM」,「PM」,「下午」或任何其他變體...例如它返回阿拉伯字符,如果您的手機設置爲阿拉伯語言!)。CFAbsoluteTimeGetCurrent和DST

那麼,你可以建議我一個函數來將CFAbsoluteTimeGetCurrent轉換爲「MySQL like」日期,如「2011-11-03 14:12:10」?

我的第二個問題是:怎麼樣時區和夏令時?無論iPhone時區如何設置,CFAbsoluteTimeGetCurrent始終返回UTC日期?它總是不含DST?

我當然知道,當地的iPhone日期/時間可能是錯的,但毫秒精度不適合我的應用程序:)

預先感謝您很重要!

回答

1

你的意思究竟由

([NSDate的日期]返回時間的本地化版本,帶有或不帶有「AM」,「PM」,「點」或任何其他變體...例如,如果您的手機設置爲阿拉伯語言,它會返回阿拉伯字符!)。

[NSDate date]返回NSDate*對象。我假設你真正的意思是-[NSDate description]的輸出返回一個字符串在用戶當前的語言環境本地化,但問題是,爲什麼你依賴於輸出-[NSDate date]?如果您需要以某種方式格式化日期,則應使用NSDateFormatter

+0

你說得對,我認爲「奇怪」字符的問題來自NSDateFormatter。我目前的代碼是: NSDate * now = [NSDate date]; NSDateFormatter * dateFormat = [[[NSDateFormatter alloc] init] autorelease]; [dateFormat setDateFormat:@「yyyy-MM-dd HH:mm:ss」]; NSString * mysql_current_time = [dateFormat stringFromDate:now]; ...如果iPhone設置爲阿拉伯語,則返回帶有阿拉伯字符的日期,如果用戶的語言環境包含AM/PM/A.M./P.M,則返回可標記的字符串。變種或一般情況下,如果它不是在24小時格式。 – flip79

+0

@ flip79:你可能想看看' - [NSDateFormatter setLocale:]'方法。 –

0

CFAbsoluteTime表示時間的時間,與時區或本地化設置無關。如果要格式化日期(即NSDate對象),則應查看NSDateFormatter,它可讓您指定輸出字符串的確切格式和本地化(如果有)。 (如果你需要在Core Foundation級別工作,CFDateFormatter也會做同樣的事情。)