2016-03-09 2 views
0

Я сохраняю запись, и эта запись имеет дату pumpTimeNSDate прилагается к ней.Получить NSDate для отображения даты из другого часового пояса на основе ее секундFromGMT

Если устройство, создавшее эту запись, находится в другом часовом поясе от устройства, которое загружает запись, устройство, загружающее запись, показывает другую дату с даты, показанной устройством, которое создало запись. Я хочу, чтобы они оба показывали одну и ту же дату.

Я понимаю, что это происходит потому, что NSDateFormatter() настраивает NSDate (который является лишь ссылкой во времени) на текущий часовой пояс пользователей, принимая во внимание его расстояние от GMT.

Как получить устройство, которое загружает запись в другой часовой пояс, чтобы показать то же самое, что и на устройстве, создавшем запись?

Примечание: originTimeOffsetObject хранит, как далеко от GMT было устройство, создавшее запись.

if let pumpTimeNSDate = objects[indexPath.row].objectForKey("pumpTimeNSDate") as? NSDate { 

       let formatter = NSDateFormatter() 
       formatter.dateFormat = "E dd, H:mm" 

       if let originTimeOffsetObject = objects[indexPath.row].objectForKey("originTimeOffset") as? NSTimeInterval 
       { 

       // not sure how to use originTimeOffsetObject 

       } 
       else 
       { 
        // if timeoffset do not exist on DB 
        createdAt = formatter.stringFromDate(pumpTimeNSDate) 
       } 
    } 

ответ

1

Вы создаете и устанавливаете NSTimeZone на NSDateFormatter. Так как вы знаете, смещение, вы можете:

let dateFormatter = NSDateFormatter() 
dateFormatter.dateStyle = .MediumStyle 
dateFormatter.timeStyle = .MediumStyle 
dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) // Update to your value 
dateFormatter.stringFromDate(NSDate()) // Display your date 
+1

Это работает! Благодаря!!! – GuiSoySauce

1

в разностном часовом поясе значение дат все тот же, но он отформатирован в текущем часовом поясе.

Так что если вы хотите показать время, то все равно, вы можете преобразовать время в NSString с помощью NSDateFormatter, а часовой пояс - это ваш часовой пояс по умолчанию. Или вы можете хранить время в NSString, где бы они ни были одинаковы :)