2015-09-02 2 views
1

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

var dateFormatter: NSDateFormatter = NSDateFormatter() 
var dateString = "2015-09-02 22:05:00" 

dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
//dateFormatter.timeZone = NSTimeZone.localTimeZone() 

let openDate = dateFormatter.dateFromString(dateString) 

Приведенный выше код создает значение даты «2 сентября 2015 года, 10:05 вечера», что именно то, что я хочу. Однако, когда я копирую и вставляю один и тот же код в простой проект, значение всегда возвращается как «2015-09-03 04:05:00 +0000», чего я не хочу. Я хочу, чтобы дата всегда была такой, как если бы я находился в том же часовом поясе, что и в ней, независимо от того, где я сейчас.

Есть ли способ, чтобы я мог полностью игнорировать часовые пояса? Я хочу сохранить дату локально и получить ее локально, но она меняет время на меня. Установка временной зоны в форматировании даты не имеет значения. Почему он работает на детской площадке, но не в проекте? Благодарю.

ответ

1

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

let dateFormatter: NSDateFormatter = NSDateFormatter() 
let dateString = "2015-09-02 22:05:00" 

dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)! 
dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) 
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
if let dateFromString = dateFormatter.dateFromString(dateString){ 
    println(dateFromString) // "2015-09-02 22:05:00 +0000" 
    let stringFromDate = dateFormatter.stringFromDate(dateFromString) 
    println(stringFromDate) // "2015-09-02 22:05:00" 
} 
+0

Awesome! Большое спасибо! – Lastmboy

+0

@Lastmboy приветствуются –

0

NSDate принимает протокол NSCoding и может быть размещен непосредственно в NSUserDefaults, поэтому вам не придется беспокоиться о сериализации вообще.

Смежные вопросы