web-dev-qa-db-ja.com

Swift-ローカルの日付と時刻を取得する

Swiftで現地の日付と時刻を取得するにはどうすればよいですか?

let last_login = String(NSDate.date())
20
Mohammad Nurdin

私はすでに答えを見つけました。

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

更新:Xcode 8.2.1•Swift 3.0.2

Dateメソッドdescription(with locale: Locale?)を使用して、ユーザーのローカライズされた時間の説明を取得することもできます。

指定されたロケールを使用する、またはロケール引数がnilの場合、国際形式YYYY-MM-DD HH:MM:SS±HHMMの日付の文字列表現。ここで、±HHMMは時間帯オフセットを時間と分で表します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

46
Leo Dabus

nSDateFormatterを使用し、形式を設定します

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

またはスタイル

dateFormatter.dateStyle = .NoStyle
dateFormatter.timeStyle = .MediumStyle
6
vikingosegundo
let expiryDate: Date = ...
let localizedDateString = DateFormatter.localizedString(from: expiryDate, dateStyle: .medium, timeStyle: .short)

「2017年9月10日14時37分」

4

最も一般的な文字列形式を取得するには(クエリとデータベースを処理する場合):

Swift 4

2019-01-09T01:07:04Z(GMT/Zulu時間でのRFC3339)

let f = ISO8601DateFormatter()
f.formatOptions = [.withInternetDateTime]
let s = f.string(from: Date())

2019-01-08T17:04:16-08:(現地時間帯を考慮したRFC3339)

let f = ISO8601DateFormatter()
f.formatOptions = [.withInternetDateTime]
f.timeZone = TimeZone.current
let s = f.string(from: Date())

2019-01-09(GMT/Zulu時間の標準日付スタンプ)

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

4つの文字列はすべて、まったく同じ日付と時刻を表します。また、これらの文字列を(これらの形式で)アルファベット順に並べ替えると、時系列に並べられることを忘れないでください。つまり、基本的なa- to-zソート。

3
bsod

スイフト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
2
Ganesh Manickam

レオの答えはかなり良いです。計算プロパティとして使用する方法を追加したかっただけです。

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

次のように使用します。

print(currentTime)
2
ScottyBlades

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)
1
Hani Ibrahim