NSDateFormatter无法正确转换

时间:2010-04-22 09:53:01

标签: iphone nsdateformatter

我有一个从xml提要传递的NSString ........

NSString *strDate =@"Thu, 22 Apr 2010 10.30 am CEST";

我目前正在使用此代码格式化日期........

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm a vvvv"];
    NSDate *myDate = [dateFormatter dateFromString:date];
    [dateFormatter setDateFormat:@"HH"];
    NSLog(@"%@", [dateFormatter stringFromDate:myDate]);

我想格式化我的字符串只显示几小时,目前我正在获得这样的价值。

strDate =@"2010-04-10 14:00:00 +0530";

有人可以帮我这个吗?......


对不起。这是我的错。它应该是这样的。

NSString *strDate =@"Thu, 22 Apr 2010 10:30 am CEST";

我的要求是使用NSDateFormatter仅从上面的字符串获取小时部分。我怎样才能做到这一点。对不起以前的错误。

感谢。

3 个答案:

答案 0 :(得分:1)

如果您想获得10:30中的10分(如果是您的要求)那么您可以这样做:

strDate = @"Thu, 22 Apr 2010 10:30 am CEST";
NSArray *dateComponents = [strDate componentsSeparatedByString:@" "];
NSString *requiredString = [dateComponents objectAtIndex:4];
dateComponents = [requiredString componentsSeparatedByString:@":"];
requiredString = [dateComponents objectAtIndex:0];

当你这样做时:

NSLog(rquiredString);

输出: 10;

这只是一种解决方法,为了更好的方法,您应该通过 NSDateComponents类。

希望这有帮助。

谢谢,

Madhup

答案 1 :(得分:0)

你想这样做:

NSString *strDate =@"Thu, 22 Apr 2010 10:30 am CEST";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm a"];
NSDate *myDate = [dateFormatter dateFromString:strDate];
[dateFormatter setDateFormat:@"hh"];
strDate = [dateFormatter stringFromDate:myDate];
NSLog(@"%@", strDate);

(首先你的原始格式化程序错了,你有一个:而不是。)编辑不再是这样的

其次,您要忽略CEST位,因为这会导致您的时区被更改

答案 2 :(得分:0)

更改为

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh.mm a vvvv"];

(。而不是:in hh:mm)