Чтобы избежать каких-либо проблем с датой и временем, я планировал получить дату от моего собственного server
,
Так что я написал этот кусок кода в PHP
файл и загрузил этот файл на мой сервер.
Date.php
<?php
date_default_timezone_set('Asia/Kolkata');
$date = date('d/m/Y', time());
echo $date;
?>
Теперь для доступа к нему я использую этот кусок кода:
NSURL *url = [NSURL URLWithString:@"http://www.myserver.com/date.php"];
NSError* error;
NSString *content = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&error];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/yyyy"];
NSDate *serverDate = [dateFormat dateFromString:content];
NSDate *DeviceDate = [NSDate date];
Не главная первопричина
Моя системная дата установлена на текущую дату и время. Теперь, когда я отлаживаю код, я получаю:
serverDate = 2015-12-27 18:30:00 +0000
а также
deviceDate = 2015-12-28 10:35:16 +0000
Я не могу понять, почему между этими двумя датами разница в один день. Чего мне не хватает?
Передайте обе даты в этой функции. Дата возвращения в UTC.
NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:YourDate];
NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:YourDate];
NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset;
NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:YourDate] ;
Других решений пока нет …