0

我正在努力将 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);

谢谢!

4

1 回答 1

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]的可能不正确。

于 2012-04-09T16:25:07.660 回答