NSDateFormatter dateFromString返回错误的日期,即使随字符串提供TimeZone详细信息

时间:2015-07-01 10:12:25

标签: ios objective-c iphone nsdate nsdateformatter

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

[dateFormat setDateFormat:@"EEEE','dd MMM YYYY z"];

NSString *string = @"Thursday,11 Jun 2015 +0530";

NSDate *tempDate = [dateFormat dateFromString:string];

现在我在NSLog ..

NSLog(@"%@",[tempDate description]);

2014-12-24 18:30:00 +0000

NSLog(@"%@",[dateFormat stringFromDate:tempDate]);

2014年12月25日星期四IST

为什么没有显示' 2015年6月11日星期四IST'相反,' 2014年12月25日星期四IST' ?

3 个答案:

答案 0 :(得分:2)

if you change to 'yyyy' will show you result like.
  

2015年6月11日(星期四)+0530

NSDateFormatter *dateFormattor = [[NSDateFormatter alloc] init];
[dateFormattor setDateFormat:@"EEEE','dd MMM yyyy zzzz"];
 NSTimeZone *_timezone = [NSTimeZone timeZoneWithName:@"IST"];
[dateFormattor setTimeZone:_timezone];
NSString *string = @"Thursday,11 Jun 2015 +0530";
NSDate *tempDate = [dateFormattor dateFromString:string];
NSLog(@"tempDate is :%@",tempDate);
NSLog(@"%@",[dateFormattor stringFromDate:tempDate]);
  

2015年6月11日,星期四印度标准时间

在'z'字符处更改行会得到不同的结果。

[dateFormattor setDateFormat:@"EEEE','dd MMM yyyy zzzz"];
  1. z = GMT + 0530 IST
  2. zz = GMT + 0530 IST
  3. zzz = GMT + 0530 IST
  4. zzzz =印度标准时间IST
  5. zzzzz =印度标准时间IST
  6. 希望这会有所帮助。

答案 1 :(得分:1)

我改变了'YYYY'到了'yyyy'它起作用了。感谢您阅读本文。

答案 2 :(得分:0)

NSDateFormatter *outDateFormatter = [[NSDateFormatter alloc] init];
outDateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"IST"];
outDateFormatter.dateFormat = (your date formate)

尝试使用此