web-dev-qa-db-ja.com

swiftで日付形式をdd / MM / YYYYからYYYY-MM-ddに変換する方法

私は21/07/2016から2 16-07-21への秘密に疲れましたが、この日付を得ました2015-12-2
これが私が試したコードです

let inputFormatter = NSDateFormatter()
inputFormatter.dateFormat = "MM/dd/YYYY"

let outputFormatter = NSDateFormatter()
outputFormatter.dateFormat = "YYYY-MM-dd"

let showDate = inputFormatter.dateFromString("07/21/2016")
let resultString = outputFormatter.stringFromDate(showDate!)

print(resultString)

変換する方法は?
ありがとうございました

11
iParesh

最初にyearフォーマッターをyyyyで変更し、2つのNSDateFormatterを使用する代わりに、次のように1つだけ使用します

let inputFormatter = NSDateFormatter()
inputFormatter.dateFormat = "MM/dd/yyyy"
let showDate = inputFormatter.dateFromString("07/21/2016")
inputFormatter.dateFormat = "yyyy-MM-dd"
let resultString = inputFormatter.stringFromDate(showDate!)
print(resultString)

Swift3の場合

func convertDateFormater(_ date: String) -> String
    {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss z"
        let date = dateFormatter.date(from: date)
        dateFormatter.dateFormat = "yyyy-MM-dd"
        return  dateFormatter.string(from: date!)

    }
45
Nirav D

以下のような関数を定義できます。

// input string should always be in format "21/07/2016" ("dd/MM/yyyy")

func formattedDateFromString(dateString: String, withFormat format: String) -> String? {

    let inputFormatter = NSDateFormatter()
    inputFormatter.dateFormat = "dd/MM/yyyy"

    if let date = inputFormatter.dateFromString(dateString) {

      let outputFormatter = NSDateFormatter()
      outputFormatter.dateFormat = format

      return outputFormatter.stringFromDate(date)
    }

    return nil
}

上記を使用して、日付文字列の出力形式を渡すことができます。入力形式は常にdd/MM/yyyyです。次に、次のように使用します。

let stringA = formattedDateFromString("21/07/2016", withFormat: "yyyy-MM-dd")
let stringB = formattedDateFromString("21/07/2016", withFormat: "MMM dd, yyyy")

NSLog("stringA: \(stringA)") // 2016-07-21
NSLog("stringB: \(stringB)") // Jul 21, 2016
8
ahmedomer