如何将UTC日期字符串转换为本地时间

时间:2017-09-14 08:23:14

标签: ios objective-c

我目前有时间作为UTC,我希望它能转换为本地时区          NSDate * startDate;

示例strDate - 14/9/2017 7.28 Am

所需格式 - 14/9/2017 1.52 pm

我需要有关目标c的帮助。

NSDate * startDate; //包含utc日期

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, MMM d, yyyy - h:mm a"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
 NSString *timestamp = [dateFormatter stringFromDate:startDate];

但这不是正确的时间,但日期是正确的

2 个答案:

答案 0 :(得分:0)

首先将NSString转换为NSDate。

 NSDateFormatter *DateFormatter = [[NSDateFormatter alloc] init];
 NSTimeZone *timeZoneEDT =[NSTimeZone timeZoneWithName:@"GMT"];
 [DateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
 [DateFormatter setTimeZone:timeZoneEDT];
 [DateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
 NSDate *CurrentDate = [DateFormatter dateFromString:DateStr];

然后将GMT时间转换为当地时间。

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"];
[dateFormatter setTimeZone:sourceTimeZone];
NSString *dateRepresentation = [dateFormatter stringFromDate:dateFromString];

答案 1 :(得分:0)

@athira尝试这个。它对我有用。

    NSDate *startDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd/M/yyyy h.mm a"];
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
    NSString *timestamp = [dateFormatter stringFromDate:startDate];
    NSLog(@"date = %@",timestamp); //date = 14/9/2017 4.34 PM

它将使用正确的GMT + 5:30打印当前时间,并且我使用了localTimeZone。