簡體   English   中英

從NSString創建NSDate

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM