2013-02-26 67 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

希望这有助于你