NSDate to GMTДата в формате JSON - PullRequest
       46

NSDate to GMTДата в формате JSON

3 голосов
/ 21 декабря 2011

Я хочу преобразовать свою локальную дату ([NSDate date]) в GMT, чтобы создать строку JSON (/ Date (1324435876019-0000) /).

Мой код работает нормально, когда я устанавливаю свои часы на часовой пояс EST, когда я меняю часовой пояс на PST, мой код все еще действует как EST. Подскажите, пожалуйста, в чем заключается проблема следующего кода?

        NSDate *localDate = [NSDate date];
    NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone] secondsFromGMT]; // You could also use the systemTimeZone method
    NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] - timeZoneOffset;
    NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];
    NSString *time = [NSString stringWithFormat:@"/Date(%@-0000)/", [NSNumber numberWithLongLong:[gmtDate timeIntervalSince1970] * 1000]];

Ответы [ 2 ]

7 голосов
/ 21 декабря 2011

Вы можете получить время эпохи GMT, просто позвонив timeIntervalSince1970.

NSString *time = [NSString stringWithFormat:@"/Date(%lld-0000)/", 
                     (long long)([[NSDate date] timeIntervalSince1970] * 1000)];
0 голосов
/ 22 декабря 2011

@ Джо и @ Томми, ты прав. Даже я реализовал так же, как вы упомянули. Проблема была в базе данных сервера. Я нашел взломать. Мне просто нужно добавить 18000 (5 часов) секунд к текущей местной дате, и я в порядке. Так что код

        NSDate *localDate = [NSDate date];
    NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] + 18000;
    NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];

    NSString *time = [NSString stringWithFormat:@"/Date(%@-0000)/", [NSNumber numberWithLongLong:[gmtDate timeIntervalSince1970] * 1000]];
...