2017-03-01 9 views
19

NSDateStringに変換してから、フォーマットを変更しようとしています。しかし、NSDateStringに渡すと、空白が生成されます。例えばのためのiOSスウィフトでNSDateを文字列に変換する

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) 
+0

ウル 'date'を示し、それは現在の日付かそうでなければ –

+0

の現在の日付ではない、私はDatepicker – iOS

+0

から得ている 'Datepicker'の結果を表示する –

答えて

61

、あなたが

enter image description here

+0

日付は私たちが変換する必要がある適切な形式を持っていない私たちの再建 –

+0

ありがとうアンブその作業 – iOS

2

として出力を得る

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

let myString = formatter.string(from: Date()) 
// 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) 

好き更新されたことを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!) 
0

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) 

アウトプット

01日 - 3月 - 2017

17

のような文字列として変換することができます私はいつもこのコードを使用してDateをに変換しています。 (スイフト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") 
1

あなたはこの拡張機能を使用することができます

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!) 
    } 
} 

をそして、このようなあなたのビューコントローラで使用(あなたの形式で< "YYYY">を置き換えます):

yourString = yourDate.toString(withFormat: "yyyy") 
0

ものにしますフォーマッタを作成するときは、できるだけ同じインスタンスを再利用しようとすることです。フォーマッタの作成にはかなりの計算コストがかかります。以下は、私が頻繁に使っているアプリで、同じフォーマッタをアプリ全体で共有できるパターンです。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()) 
1

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 
関連する問題