Подтвердить что ты не робот

Swift - Получить местную дату и время

Как узнать местную дату и время в Свифте?

let last_login = String(NSDate.date())
4b9b3361

Ответ 1

Я уже нашел ответ.

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
let dateInFormat = dateFormatter.stringFromDate(NSDate())

Ответ 2

обновление: Xcode 8.2.1 • Swift 3.0.2

Вы также можете использовать метод Date description(with locale: Locale?) для получения описания времени, локализованного пользователем:

Строковое представление даты, используя данную локаль или если локаль аргумент ноль, в международном формате ГГГГ-ММ-ДД ЧЧ: ММ: СС ± ЧЧММ, где ± ЧЧММ представляет собой смещение часового пояса в часах и минут от UTC (например, "2001-03-24 10:45:32 +0600").

описание (с локалью: Locale?)

Date().description(with: .current)   // "Monday, February 9, 2015 at 05:47:51 Brasilia Summer Time"

Приведенный выше метод не предназначен для использования при отображении даты и времени для пользователя. Это только для целей отладки.

При отображении локальной даты и времени (текущего часового пояса) для пользователя вы должны уважать языковой стандарт пользователя и настройки устройства. Единственное, что вы можете контролировать - это стиль даты и времени (короткий, средний, длинный или полный). Подробнее об этом вы можете прочитать в этом посте shortDateTime.

Если вы намереваетесь создать метку времени UTC для целей кодирования (iso8601), вы можете проверить этот пост iso8601

Ответ 3

используйте NSDateFormatter, установив формат

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm"
println(dateFormatter.stringFromDate(NSDate()))

или стили

dateFormatter.dateStyle = .NoStyle
dateFormatter.timeStyle = .MediumStyle

Ответ 4

let expiryDate: Date = ...
let localizedDateString = DateFormatter.localizedString(from: expiryDate, dateStyle: .medium, timeStyle: .short)

"10 Sep 2017, 14:37"

Ответ 5

Чтобы вернуть наиболее распространенные строковые форматы (при работе с запросами и базами данных):

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())

Все четыре строки представляют одну и ту же дату и время. И не забывайте, что сортировка этих строк (в этих форматах) в алфавитном порядке приводит их в хронологическом порядке, что означает, что нет необходимости хранить их как объекты даты в базе данных, так как вы можете сортировать и запрашивать в хронологическом порядке, используя основные Сортировка

Ответ 6

Лев ответ довольно хорош. Я просто хотел добавить способ использовать его как вычисленное свойство.

 var currentTime: String {
    get {
        return Date().description(with: Locale.current)
    }
  }

Используйте его так:

print(currentTime)

Ответ 7

Вам нужно использовать 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)

Ответ 8

Swift 4

Чтобы узнать текущую дату и время

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