2017-03-01 87 views
19

我試圖將NSDate轉換爲String,然後更改格式。但是當我通過NSDateString它正在產生空白。在iOS Swift中將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

它不是當前日期,我從日期選擇器 – iOS

+0

顯示'Datepicker'結果 –

回答

61

爲e.g,不喜歡

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) 

你得到的輸出

enter image description here

+0

但日期沒有適當的格式,我們需要轉換基於o ñ我們reauirment –

+0

謝謝安布其工作 – iOS

2

你更新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-MAR-2017

17

我總是使用此代碼,同時將Date轉換爲String。 (Swift 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