[英]Create an NSDate from NSString
我使用以下代碼從字符串創建NSDate
:
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setTimeZone:[NSTimeZone defaultTimeZone]];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"The date from string: %@", [df dateFromString:@"2012-01-31 01:32:30"]);
我在結果中看到的是:
The date from string: 2012-01-31 07:32:30 +0000
這顯然是不正確的。
你知道為什么它給我的結果日期增加了6個小時以及如何修復它?
NSLog
日期不是顯示帶時區的日期的好方法,而是使用NSDateFormatter
獲取所需時區的字符串。
NSDate
是基於UTC的,可以使用NSDateFormatter
在任何時區正確顯示的一個真實時間。
來自Apple NSDate
文檔:
要解析包含日期的字符串並生成日期的字符串表示,您應該分別使用方法dateFromString:和stringFromDate:使用NSDateFormatter的實例 - 有關詳細信息,請參閱“日期格式化程序”。
示例代碼:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setTimeZone:[NSTimeZone defaultTimeZone]];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [df dateFromString:@"2012-01-31 01:32:30"];
NSLog(@"The date from string: %@", date);
NSString *stringFromDate = [df stringFromDate:date];
NSLog(@"stringFromDate: %@", stringFromDate);
NSLog輸出:
字符串的日期:2012-01-31 06:32:30 +0000
stringFromDate:2012-01-31 01:32:30
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.