2012-07-27 35 views
2

我試圖格式化日期以匹配服務器端預期的格式。Objective-C - 如何獲取日期格式化程序以在時區偏移量中添加冒號

  • 求購:1985-01-24T00:00:00-07:00
  • 了:            1985-01-24T00:00:00-0700
  • 使用:      yyyy-MM-dd'T'HH:mm:ssZZZ

是否有日期格式的詭計我可以用它來獲取冒號嗎?

這是我的代碼。 _birthdate是出生日期選擇器提供的日期:

NSDate *birthdate = (NSDate *)resultObject; 
[_birthdate setNewTitle:[IRDate mmddyyFromNSDate:birthdate]];    

//Set server-ready birthdate format 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; 
serverFormattedBirthDate = [formatter stringFromDate:birthdate]; 

NSLog(@"Birthdate: %@", serverFormattedBirthDate); 

回答

3

按照Date Format Specifiers文檔,它看起來像你需要5 Z的。這會讓你得到像"-08:00"這樣的東西。


啊哈,我明白你在說什麼了。如果你在OS X 10.8上運行格式化,你會得到你期望的字符串。但是,如果您在iOS 5.1上運行格式化,則會在字符串中獲得額外的「GMT」。

我猜測底層數據已經在最新版本的CLDR中發生了變化。在那種情況下,我不確定正確答案是什麼。

+0

是的,但那就給我1985-01-24T00:00:00GMT-07:00。我不想要格林威治標準時間。 – 2012-07-27 21:47:08

+0

呵呵。它適用於我在10.8 ... – 2012-07-27 21:51:51

+1

在這裏運行OS X 10.7.4。無法得到我想要的確切字符串,但我有一個解決方法,使用五個Z,就像你建議的那樣,然後用「」替換「GMT」的字符串。這應該暫時工作。 – 2012-07-30 20:57:34

相關問題