Программирование на интерфейс абсолютно не связано с абстрактными интерфейсами, как мы видим на Java или .NET. Это даже не концепция ООП.
На самом деле это не значит, что вы не обходитесь с внутренними элементами объекта или структуры данных. Используйте интерфейс абстрактной программы или API для взаимодействия с вашими данными. В Java или C # это означает использование общедоступных свойств и методов вместо необработанного доступа к полям. Для C это означает использование функций вместо необработанных указателей.
EDIT: И с базами данных это означает использование представлений и хранимых процедур вместо прямого доступа к таблице.
let dateString = "2015-08-12 09:30:41 +0000"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
if let dateFromString = dateFormatter.dateFromString(dateString.componentsSeparatedByString(" ").first ?? "") {
println(dateFromString) // "2015-08-12 00:00:00 +0000"
}
Если вы заботитесь только о часовом поясе на устройстве пользователя, то есть вы не собираетесь сохранять эту форматированную строку даты на сервер и т. д., тогда вы можете использовать следующий код:
var formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat="yyyy-MM-dd 00:00:00 Z"
formatter.stringFromDate(date)
Если вы хотите сохранить эту строку даты на сервере, то вы должны добавить информацию о часовом поясе в форматтер:
var formatter: NSDateFormatter = NSDateFormatter()
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
formatter.dateFormat="yyyy-MM-dd 00:00:00 Z"
formatter.stringFromDate(date)
Обновить
Теперь я понимаю, что вы на самом деле хотели do, у вас есть строка даты вместо объекта NSDate в качестве входа.
Вы можете использовать следующий код для достижения желаемого результата в отношении сохранения информации о часовом поясе на входе.
let dateString = "2015-08-12 09:30:41 +0000"
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let timeZone = NSTimeZone(forSecondsFromGMT: 0)
let inputDateFormatter = NSDateFormatter()
inputDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss Z"
inputDateFormatter.calendar = calendar
if let inputDate = inputDateFormatter.dateFromString(dateString) {
let outPutDateFormatter = NSDateFormatter()
outPutDateFormatter.calendar = calendar
outPutDateFormatter.timeZone = timeZone
outPutDateFormatter.dateFormat = "yyyy-MM-dd 00:00:00 Z"
print(outPutDateFormatter.stringFromDate(inputDate))
}
Самый простой способ удалить временную часть из экземпляра NSDate -
let startOfDate = NSCalendar.currentCalendar().startOfDayForDate(NSDate())
Чтобы получить дату в зависимости от текущего часового пояса, используйте
let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!
calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let startOfDate = calendar.startOfDayForDate(NSDate())
println(startOfDate)
println(NSDate())
печатает также дату в UTC
– vadian
10 August 2015 в 07:21
2015-08-12 00:00:00 +0000
Приветствия! – Ashish Kakkad 10 August 2015 в 08:50