Как узнать местную дату и время в Свифте?
let last_login = String(NSDate.date())
Как узнать местную дату и время в Свифте?
let last_login = String(NSDate.date())
Я уже нашел ответ.
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
let dateInFormat = dateFormatter.stringFromDate(NSDate())
обновление: Xcode 8.2.1 • Swift 3.0.2
Вы также можете использовать метод Date description(with locale: Locale?)
для получения описания времени, локализованного пользователем:
Строковое представление даты, используя данную локаль или если локаль аргумент ноль, в международном формате ГГГГ-ММ-ДД ЧЧ: ММ: СС ± ЧЧММ, где ± ЧЧММ представляет собой смещение часового пояса в часах и минут от UTC (например, "2001-03-24 10:45:32 +0600").
Date().description(with: .current) // "Monday, February 9, 2015 at 05:47:51 Brasilia Summer Time"
Приведенный выше метод не предназначен для использования при отображении даты и времени для пользователя. Это только для целей отладки.
При отображении локальной даты и времени (текущего часового пояса) для пользователя вы должны уважать языковой стандарт пользователя и настройки устройства. Единственное, что вы можете контролировать - это стиль даты и времени (короткий, средний, длинный или полный). Подробнее об этом вы можете прочитать в этом посте shortDateTime.
Если вы намереваетесь создать метку времени UTC для целей кодирования (iso8601), вы можете проверить этот пост iso8601
используйте NSDateFormatter, установив формат
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm"
println(dateFormatter.stringFromDate(NSDate()))
или стили
dateFormatter.dateStyle = .NoStyle
dateFormatter.timeStyle = .MediumStyle
let expiryDate: Date = ...
let localizedDateString = DateFormatter.localizedString(from: expiryDate, dateStyle: .medium, timeStyle: .short)
"10 Sep 2017, 14:37"
Чтобы вернуть наиболее распространенные строковые форматы (при работе с запросами и базами данных):
Swift 4
2019-01-09T01: 07: 04Z (RFC3339 по Гринвичу/времени Зулу)
let f = ISO8601DateFormatter()
f.formatOptions = [.withInternetDateTime]
let s = f.string(from: Date())
2019-01-08T17: 04: 16-08: 00 (RFC3339 с учетом локального часового пояса)
let f = ISO8601DateFormatter()
f.formatOptions = [.withInternetDateTime]
f.timeZone = TimeZone.current
let s = f.string(from: Date())
2019-01-09 (стандартная отметка даты по Гринвичу/зулусскому времени)
let f = ISO8601DateFormatter()
f.formatOptions = [.withFullDate, .withDashSeparatorInDate]
let s = f.string(from: Date())
2019-01-08 (стандартная отметка даты для локального часового пояса)
let f = ISO8601DateFormatter()
f.formatOptions = [.withFullDate, .withDashSeparatorInDate]
f.timeZone = TimeZone.current
let s = f.string(from: Date())
Все четыре строки представляют одну и ту же дату и время. И не забывайте, что сортировка этих строк (в этих форматах) в алфавитном порядке приводит их в хронологическом порядке, что означает, что нет необходимости хранить их как объекты даты в базе данных, так как вы можете сортировать и запрашивать в хронологическом порядке, используя основные Сортировка
Лев ответ довольно хорош. Я просто хотел добавить способ использовать его как вычисленное свойство.
var currentTime: String {
get {
return Date().description(with: Locale.current)
}
}
Используйте его так:
print(currentTime)
Вам нужно использовать NSDateFormatter
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy HH:mm"
dateFormatter.locale = "en" // Change "en" to change the default locale if you want
let stringDate = dateFormatter.stringFromDate(date)
Чтобы узнать текущую дату и время
let currentDate = Date()
print(currentDate) //this will return current date and time
но это будет в типе даты, чтобы преобразовать дату в строку
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm" //give the formate according to your need
let dateStr = dateFormatter.string(from: currentDate) //which will give the string of current date and time in required dateformate