2016-12-24 12 views
2

У меня есть необходимость хранить как местное время, как в часовом поясе пользователей и времени UTC в таблице транзакций с использованием основных данныхКак сохранить две даты, один из местных дату и один в UTC

То, что я хочу следующим

createDate должны отражать пользователи местного часового пояса, в данном случае я нахожусь в Китае так GMT + 8

createDateUtc должен представлять ту же метку времени, но в UTC

Я пробовал различные форматтеры, но по некоторым причинам я не могу получить результат я хочу

Вот мои два форматтеры, как вы можете видеть, что я попытался с помощью часового пояса, как хорошо, но она до сих пор не установили дату в формате UTC.

NSDateFormatter *dateFormatterWithTz = [[NSDateFormatter alloc] init]; 
    [dateFormatterWithTz setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; 

    NSDateFormatter *dateFormatterUtc = [[NSDateFormatter alloc] init]; 
    [dateFormatterUtc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; 
    //[dateFormatterUtc setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

вот как создать переменные даты

NSDate *createdDateUtc = [NSDate date]; 
NSDate *createdDate = [NSDate dateWithTimeInterval:[[NSTimeZone systemTimeZone] secondsFromGMT] sinceDate:createdDateUtc]; 

Вот что массив выглядит что неправильно, как вы можете видеть, что создали свою дату Utc в моей местной дате и протолкнула дату создания к завтрашнему дню и по-прежнему использовать одно и то же временное смещение, проблема должна заключаться в том, что моя дата UTC установлена ​​на местное время, но я не могу понять, как сделать это UTC, чтобы моя дата создания была правильно рассчитана с этого

createdDate = "2016-12-25T03:19:38+08:00"; 
createdDateUtc = "2016-12-24T19:19:38+08:00"; 

ответ

1

вам необходимо предоставить TimeZone на дату formater

для местного TIMEZONE попробовать этот

NSDateFormatter *formate =[[NSDateFormatter alloc] init]; 
[formate setTimeZone:[NSTimeZone localTimeZone]]; 
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss a"]; 
NSString *strToday =[formate stringFromDate:[NSDate date]]; 

и для UTC часовой пояс установлен UTC часовой пояс как этот

NSDateFormatter *formate =[[NSDateFormatter alloc] init]; 
[formate setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss a"]; 
NSString *strToday =[formate stringFromDate:[NSDate date]]; 

надеюсь, что это поможет вы.