0

我有一串日期 2010-11-29T00:00:00+05:30 ,我想将其转换为NSDate. 我想将其转换为 2010 年 11 月 29 日。为此,我正在做这样的事情..

NSDateFormatter *df = [[NSDateFormatter alloc] init];
textForLabel = @"2010-11-29T00:00:00+05:30";
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *myDate = [df dateFromString:textForLabel];
NSLog(@"date : %@",myDate);

但输出为空。

2010-11-29T00:00:00+05:30 的日期格式可能是什么?

我不明白这里出了什么问题。

4

4 回答 4

1

首先,去掉时区中的冒号,因为“+05:30”没有时区格式标识符

textForLabel = [textForLabel
                stringByReplacingCharactersInRange:NSMakeRange(21,1)
                withString:@""];

然后,您将拥有以下字符串:2010-11-29T00:00:00+0530

可以使用以下日期格式:

[df setDateFormat:@"yyyy:MM:dd'T'HH:mm:sszzz"];

相关问题:iPhone NSDateFormatter 时区转换

于 2012-06-20T16:13:47.733 回答
0
-(NSDate *) getDateFor :(NSString *)ICSDateString
{
    int strLen = [ICSDateString length];    
    NSString * subString1 = [ICSDateString substringWithRange:NSMakeRange(0, strLen - 1)];
    NSLog(@"%d  %d subString1 %@", strLen, subString1.length, subString1);
    NSDateFormatter* df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyyMMdd'T'HHmmss'Z'"];
    [df setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];

    NSDate* parsedDate = [df dateFromString:subString1];

    [df release];
    NSLog(@"parsedDate %@", parsedDate);
    return parsedDate;
}

想想,这是从 ICS 格式日期获取 NSDate 的正确方法。请查看此链接以供参考。谢谢。

于 2012-06-21T04:10:38.170 回答
0

textForLabel = 2010-11-29T00:00:00+05:30

那不是字符串。考虑到缺少结束分号,我怀疑它甚至会编译,但如果编译器可以编译,则可能会将其解释为表达式并将结果数字分配给textForLabel. 要使其成为字符串,请执行以下操作:

textForLabel = @"2010-11-29T00:00:00+05:30";
于 2012-06-20T15:54:42.587 回答
0

尝试这个,

NSDateFormatter *df = [[NSDateFormatter alloc] init];
textForLabel = @"2010-11-29T00:00:00+05:30";
NSArray *components = [textForLabel componentsSeperatedByString:@"T"];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *myDate = [df dateFromString:[components objectAtIndex:0]];
NSLog(@"date : %@",myDate);

这不是所需的方法,但会起作用:)

于 2012-06-20T15:55:49.340 回答