2017-03-01 90 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