web-dev-qa-db-ja.com

Swift iOSで文字列を日付に変換する方法は?

Swiftを学習していて、日付文字列をNSDateから文字列に変換することに打たれています。この形式の日付文字列を取得しています "Thu、22 Oct 2015 07:45:17 +0000"。日付をMM-dd-yyyy形式で表示する必要があります。次のコードを試しましたが、「null」を返します。

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
let dateObj = dateFormatter.dateFromString(dateString!)
print("Dateobj: \(dateObj)")

誰かが間違っているところを助けてくれますか?ヘルプを楽しみにしています。前もって感謝します。

48
Yuvaraj.M

まず、文字列をその形式でNSDateに変換する必要があります。次に、dateFormatterを単純な形式に変更し、文字列に変換します。

Swift

let dateString = "Thu, 22 Oct 2015 07:45:17 +0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz"
dateFormatter.locale = Locale.init(identifier: "en_GB")

let dateObj = dateFormatter.date(from: dateString)

dateFormatter.dateFormat = "MM-dd-yyyy"
print("Dateobj: \(dateFormatter.string(from: dateObj!))")

印刷結果は次のとおりです。Dateobj: 10-22-2015

103
t4nhpt
//String to Date Convert

var dateString = "2014-01-12"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let s = dateFormatter.dateFromString(dateString)
println(s)


//CONVERT FROM NSDate to String  

let date = NSDate()
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" 
var dateString = dateFormatter.stringFromDate(date)
println(dateString)  
46

Swift 2以下

let date = NSDate()
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
var dateString = dateFormatter.stringFromDate(date)
println(dateString)

Swift 3以降では、これは次のように記述されます。

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
var dateString = dateFormatter.string(from: date)
8
brockk

Gary Makinからの回答をご覧ください。そして、フォーマットやデータを変更する必要があります。持っているデータが選択したフォーマットに適合しないためです。たとえば、このコードは正しく機能します。

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
let dateObj = dateFormatter.dateFromString("10 10 2001")
print("Dateobj: \(dateObj)")
4
Alexey Pichukov