iPhone / OS X:转换UTC格式的日期和时间值日历所需的格式

时间:2012-04-09 16:18:18

标签: iphone macos

我正在努力将UTC时间转换为我想要的日期格式。

2012-03-10T09:30:00Z

需要转换为以下格式

3:00:00pm April 19, 2012

请问有人可以帮我解决这个问题吗?

我试过以下,

    NSString *formatted;
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"HH:mm:ss EEEE, MMM d"];
// Here datetime= 2012-03-10T09:30:00Z
    NSDate *date = [NSDate dateWithTimeIntervalSince1970: [datetime intValue]]; 
    NSString *dateString = [formatter stringFromDate:date];
    NSLog(@"dateString: %@", dateString);

但是,它的打印错误日期如“1月1日星期四06:03:32”。请纠正我。

更新:我有另一个问题,它没有给我正确的时间,但它给出了正确的日期。我的代码如下。

NSString *formatted;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"HH:mm:ss EEEE, MMM d"];


NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *date = [df dateFromString:datetime];
NSString *dateString = [formatter stringFromDate:date];
NSLog(@"dateString: %@", dateString);

谢谢!

1 个答案:

答案 0 :(得分:0)

将ISO日期字符串转换为NSDate

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *date = [df dateFromString:date_str];

然后,您可以将其转换为您当地的时区:

[df setTimeZone:[NSTimeZone localTimeZone]];
[df setDateFormat:@"HH:mm:ss EEEE, MMM d"];

在您的代码中,您的[datetime intValue]可能不正确。