2013-02-26 102 views
0

這裏是我的代碼:NSDataFormatter dateFromString導致不正確的輸出

[dateFormat setDateFormat:@"EEE MM d HH:mm:ss yyyy"]; 
logDate = [dateFormat dateFromString:[line substringToIndex:24]];  

線組成的字符串:"Mon Feb 18 09:25:53 2013: FAILED : Configuration-Update :

我得到單獨的日期‘週一02月18日9時25分53秒2013’和格式化它@"EEE MM d HH:mm:ss yyyy"格式 我得到一個不正確的輸出:。單獨"2013-02-18 03:55:53 -0000"時間被錯誤地打印我跟着Date Format Patterns用於指定patters但還是我淘汰這個問題我無法理解的地方去錯了..這將是有益的,如果有人發現問題 在此先感謝

+0

嘗試時區設置爲您格式化 – nsgulliver 2013-02-26 10:38:42

+1

的「不正確的輸出「顯然是NSLogate NSDate對象生成的」描述「輸出,而不是格式化的字符串。你得到了人們所期望的。 – 2013-02-26 12:26:27

+0

您是否設置了格式化程序的行爲? [NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];設置時區爲UTC後 – 2013-02-26 13:03:57

回答

0

感謝所有..它的工作通過改變這樣的代碼..

NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init]autorelease]; 
[dateFormat setDateFormat:@"EEE MM d HH:mm:ss yyyy"];  
[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];  
return [dateFormat dateFromString:dateString]; 
0

你需要打印時產生的日期這樣設置時區的NSDateFormatter:

[formatter setTimeZone:[NSTimeZone localTimeZone]]; 
+0

由於它的工作 – aparna 2013-05-17 08:31:42

0

您需要爲使用:

NSString *[email protected]"Mon Feb 18 09:25:53 2013: FAILED : Configuration-Update :"; 

NSDateFormatter *dateFormat=[NSDateFormatter new]; 
[dateFormat setDateFormat:@"EEE' 'MM' 'd' 'HH:mm:ss' 'yyyy"]; 

NSDate *logDate = [dateFormat dateFromString:[line substringToIndex:24]]; 

NSLog(@"logDate->%@",logDate); 
+0

試圖針鋒相對的方式太..它力的工作.. – aparna 2013-02-26 11:46:52

+0

**不可能!**我總是編譯,運行和檢查才把我張貼的答案。 – 2013-02-26 12:58:31

+0

由於時區不同,它不工作。設置時區後,它工作。謝謝 – aparna 2013-05-17 08:31:05

0

如果我們把將僅顯示相對於時區+0000的日期的NSdate對象的日誌。爲此,我們需要將日期格式化爲我們的當地時區。這樣的..

[dateFormat setDateFormat:@"EEE MM d HH:mm:ss yyyy"]; 
logDate = [dateFormat dateFromString:@"Mon Feb 18 09:25:53 2013"]; 
[dateFormat setTimeZone:[NSTimeZone localTimeZone]]; 
NSLog(@"Date %@",[dateFormat stringFromDate:logDate]); 
+0

感謝您的所有幫助,但即使這樣做後,我得到錯誤的輸出.. – aparna 2013-02-26 11:52:37

+0

NSDateFormatter * dateFormat = [[[NSDateFormatter分配]初始化] autorelease]; [dateFormat setDateFormat:@「EEE MM d HH:mm:ss yyyy」]; logDate = [dateFormat dateFromString:[line substringToIndex:24]]; [dateFormat setTimeZone:[NSTimeZone localTimeZone]]; NSLog(@「date is%@」,logDate); – aparna 2013-02-26 11:53:16

+0

錯誤地採取了日誌而不是這個.... NSLog(@「Date%@」,[dateFormat stringFromDate:logDate]); – Ganapathy 2013-02-26 11:57:50

1

試試這個

NSDate *date = [NSDate date]; 
NSDateFormatter * formatter = [[NSDateFormatter alloc]init]; 
[formatter setDateFormat:@"EEE MM d hh:mm:ss yyyy"]; 
NSLog(@"%@",[formatter stringFromDate:date]); 
NSLog(@"%@",date); 

當您只需登錄使用的NSLog你得到的UTC格式(UTC由偏移值,其在印度的標準時間5.30),其爲yyyy -MM-d HH:mm:ss z,z是基於局部性添加到當前時間或從當前時間減去的偏移量。

例如

NSLog(@"%@",[formatter stringFromDate:date]); 
NSLog(@"%@",date); 

星期二02 26 5時38分00秒2013 // 「EEE MM d爲hh:mm:ss的YYYY

週二02 26 17點46分:22 2013 // 「EEE MM d HH:MM:SS YYYY」

2013年2月26日12時08分00秒0000 //只是記錄使用的NSLog

希望這有助於你