web-dev-qa-db-ja.com

iOS SwiftでNSDateを文字列に変換する

私はNSDateStringに変換してからフォーマットを変更しようとしています。しかし、NSDateStringに渡すと、空白が生成されます。

 let formatter = DateFormatter()
 let myString = (String(describing: date))
 formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
 let yourDate: Date? = formatter.date(from: myString)
 formatter.dateFormat = "dd-MMM-yyyy"
 print(yourDate)
50
iOS

詳細情報は、 Apple Dateformatter Document から取得します。dateStringにdateformatを設定する場合は、この リンク を参照してください。詳細dateformatあなたはここで得ることができる ここで

let formatter = DateFormatter()
// initially set the format based on your datepicker date / server String
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

let myString = formatter.string(from: Date()) // string purpose I add here 
// convert your string to date
let yourDate = formatter.date(from: myString)
//then again set the date format whhich type of output you need
formatter.dateFormat = "dd-MMM-yyyy"
// again convert your date to string
let myStringafd = formatter.string(from: yourDate!)

print(myStringafd)

あなたは出力を得る

enter image description here

119
Anbu.Karthik

私はDateStringに変換する間、常にこのコードを使います。 (スイフト3)

extension Date
{
    func toString( dateFormat format  : String ) -> String
    {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = format
        return dateFormatter.string(from: self)
    }

}

そしてこう呼んでください。 。

let today = Date()
today.toString(dateFormat: "dd-MM")
53
roy

DateFormatterには、フォーマット文字列を調整するのが面倒な人のためのいくつかの出荷日のスタイルがあります。あなたがカスタムスタイルを必要としないならば、これは別のオプションです:

extension Date {  
  func asString(style: DateFormatter.Style) -> String {
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = style
    return dateFormatter.string(from: self)
  }
}

これはあなたに次のスタイルを与えます:

short, medium, long, full

使用例

let myDate = Date()
myDate.asString(style: .full)   // Wednesday, January 10, 2018
myDate.asString(style: .long)   // January 10, 2018
myDate.asString(style: .medium) // Jan 10, 2018
myDate.asString(style: .short)  // 1/10/18
11
Adrian

あなたの更新されたcode.updateそれ。

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: date as Date)
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
print(yourDate!)
4
Brijesh Shiroya

フォーマッタを作成するときに留意する必要があるのは、フォーマッタは作成するのにかなり計算コストがかかるため、可能であれば同じインスタンスを再利用することです。以下は、同じフォーマッタをアプリケーション全体で共有できるアプリケーションによく使用するパターンです。 from NSHipster

extension DateFormatter {

    static var sharedDateFormatter: DateFormatter = {
        let dateFormatter = DateFormatter()   
        // Add your formatter configuration here     
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return dateFormatter
    }()
}

使用法:

let dateString = DateFormatter.sharedDateFormatter.string(from: Date())
3
Kevin Stewart

この拡張子を使うことができます:

extension Date {

    func toString(withFormat format: String) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = format
        let myString = formatter.string(from: self)
        let yourDate = formatter.date(from: myString)
        formatter.dateFormat = format

        return formatter.string(from: yourDate!)
    }
}

そしてこれをあなたのView Controllerで次のように使用します(<"yyyy">をあなたのフォーマットに置き換えます):

yourString = yourDate.toString(withFormat: "yyyy")
1
Archi Stepanov

DateFormatterを割り当てた後、あなたはフォーマットされた文字列を与える必要があります、そしてあなたはこのように文字列として変換することができます

var date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: date)
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
let updatedString = formatter.string(from: yourDate!)
print(updatedString)

出力

2017年3月1日

1