Harjot Harry
Harjot Harry

Reputation: 155

We get time from server and change into local time zone in iOS 7?

server time is 4:00AM and local current time is 3:32PM i was use this method but this method is not working so solve this.

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
 [dateFormatter1 setDateFormat:@"yyyy-MM-dd 'at' HH:mm:ss"];
 NSDate *date = [dateFormatter1 dateFromString:serverTime];
 NSLog(@"date : %@",date);

 NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
 NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];

 NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];
 NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date];
 NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset;

 NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date];

 NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init];
 [dateFormatters setDateFormat:@"NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
 [dateFormatter1 setDateFormat:@"yyyy-MM-dd 'at' HH:mm:ss"];
 NSDate *date = [dateFormatter1 dateFromString:serverTime];
 NSLog(@"date : %@",date);

 NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
 NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];

 NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];
 NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date];
 NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset;

 NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date];

 NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init];
 [dateFormatters setDateFormat:@"dd-MMM-yyyy hh:mm"];
 [dateFormatters setDateStyle:NSDateFormatterShortStyle];
 [dateFormatters setTimeStyle:NSDateFormatterShortStyle];
 [dateFormatters setDoesRelativeDateFormatting:YES];
 [dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
 serverTime = [dateFormatters stringFromDate: destinationDate];
 NSLog(@"DateString : %@", serverTime);"];
 [dateFormatters setDateStyle:NSDateFormatterShortStyle];
 [dateFormatters setTimeStyle:NSDateFormatterShortStyle];
 [dateFormatters setDoesRelativeDateFormatting:YES];
 [dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
 serverTime = [dateFormatters stringFromDate: destinationDate];
 NSLog(@"DateString : %@", serverTime);

some people say this method is working but when i was use this code this is not working.

Upvotes: 0

Views: 342

Answers (2)

Ashish Patel
Ashish Patel

Reputation: 332

    NSDate* NSdateFromNSString(NSString *selectedDate)
{
    NSString *dateWithInitialFormat =selectedDate;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Chicago"]];
    //Set Server ime zone

    NSDate *date = [dateFormatter dateFromString:dateWithInitialFormat];
    return date;
}

Upvotes: 1

Sanbrother
Sanbrother

Reputation: 621

Perhaps, you should

dateFormatter.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

And

dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

Upvotes: 0

Related Questions