Получить текущую дату и время в часовом поясе устройства iPhone с UTC-5 с указанием времени и времени приложения iPhone?
В моем приложении iPhone я очень стараюсь преобразовать время отклика webservice на текущее время устройства. webservice time in UTC-5 timezone
. Приложение используется во всем мире. Поэтому мне нужно преобразовать время ответа в текущий часовой пояс устройства. Это простое приложение для обмена сообщениями.
Когда я отправил message the time is "5:05 PM" (India Chennai timezone)
, но когда я получаю время от webservice is "2012-07-16 07:33:01"
. Когда я показываю время в приложении, я должен преобразовать время в локальное время устройства. Я попытался каким-то образом, но я пока не могу решить. Код:
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter1 setLocale:[NSLocale currentLocale]];
//[dateFormatter1 setTimeZone:[NSTimeZone timeZoneWithName:@"IST"]];
[dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *date = [dateFormatter1 dateFromString:dateStr];
NSLog(@"date : %@",date);
Но дата и время вывода 2012-07-16 02:03:01 +0000
Я сохранил эту дату/время в Coredata
, и когда я получил от Coredata
и скрытый до NSString
, используя приведенный ниже код,
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]];
dateStr = [dateFormatters stringFromDate:dateString];
NSLog(@"DateString : %@", dateStr);
Дата и время вывода "Today 7:33 AM
". Он должен показывать "Today 5:05 PM
". Может ли кто-нибудь пожалеть мой день? Пожалуйста, помогите решить эту проблему. Спасибо заранее.
Ответы
Ответ 1
Mr.Gopinath. Я проверил ваш сценарий и добавил код для справки. Пожалуйста, проверьте ниже, и, пожалуйста, дайте мне знать, что это полезно для вас.
NSString *dateStr = @"2012-07-16 07:33:01";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter1 dateFromString:dateStr];
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] autorelease];
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]];
dateStr = [dateFormatters stringFromDate: destinationDate];
NSLog(@"DateString : %@", dateStr);
Спасибо.
Ответ 2
NSDate* currentDate = [NSDate date];
NSTimeZone* CurrentTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* SystemTimeZone = [NSTimeZone systemTimeZone];
NSInteger currentGMTOffset = [CurrentTimeZone secondsFromGMTForDate:currentDate];
NSInteger SystemGMTOffset = [SystemTimeZone secondsFromGMTForDate:currentDate];
NSTimeInterval interval = SystemGMTOffset - currentGMTOffset;
NSDate* TodayDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:currentDate];
NSLog(@"Current time zone Today Date : %@", TodayDate);
Надеюсь, это поможет другим разработчикам! Счастливое кодирование!