我將NSDates存儲爲您在NSDate中調用說明時獲得的國際格式的文件。將NSDate的描述轉換爲NSDate?
但是,我不知道如何從字符串格式返回到NSDate對象。 NSDateFormatter似乎只限於幾種不包括國際版本的格式。
我應該怎樣從字符串格式回去?
我將NSDates存儲爲您在NSDate中調用說明時獲得的國際格式的文件。將NSDate的描述轉換爲NSDate?
但是,我不知道如何從字符串格式返回到NSDate對象。 NSDateFormatter似乎只限於幾種不包括國際版本的格式。
我應該怎樣從字符串格式回去?
傑夫是對的,NSCoding
可能是序列化NSDate
對象的首選方式。無論如何,如果你真的想/需要將日期保存爲一個明確的日期字符串,這可能會幫助你:
實際上,NSDateFormatter
根本不限於預定義的格式。您可以通過dateFormat
屬性設置任意自定義格式。下面的代碼應該能夠以「國際格式」解析日期字符串,即。格式NSDate
的-description
用途:
NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZ";
NSDate* date = [dateFormatter dateFromString:@"2001-03-24 10:45:32 +0600"];
有關格式字符串語法一個完整的參考,看看在Unicode standard。
但是,請注意-description
- 這些方法的輸出通常針對人類閱讀器(例如日誌消息),並且不保證它不會在新的SDK版本中更改其輸出格式!您應該使用相同的日期格式化程序來序列化您的日期對象:
NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZ";
NSString* dateString = [dateFormatter stringFromDate:[NSDate date]];
我想嘗試建立一個NSDateFormatter
通過下面的方法成功地解析字符串:
- (NSDate *)dateFromString:(NSString *)string
注意,這可能需要一段時間來讓NSDateFormatter
設置恰到好處地成功解析你的字符串。
如果您要存儲這樣的面向程序的數據,我還建議以易於訪問的格式存儲它,例如CFAbsoluteTime
。一旦你在程序中擁有它,你可以將它格式化爲國際格式或其他人可讀的格式。
而不是將描述保存到文件,爲什麼不保存對象本身? NSDate
符合NSCoding
協議;保存對象意味着您不必擔心翻譯它。有關更多信息,請參見NSCoding protocol reference。
將其轉換爲NSDate接受的格式,然後執行轉換。
或者,取決於您指的是哪個NSDate(!)initWithString應該覆蓋國際標準日期。
不幸的是,現在'initWithString:'已被棄用。 – ThomasW 2012-10-11 07:57:19
是的,我需要跨平臺的可交換日期字符串。這應該解決它。謝謝! – 2009-08-29 08:39:32