在iOS Swift中将NSDate转换为String

iOS*_*iOS 61 nsdateformatter ios swift swift3

我试图将a转换NSDate为a String然后更改格式.但是当我传递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)
Run Code Online (Sandbox Code Playgroud)

Anb*_*hik 137

您可以从Apple Dateformatter Document获取详细信息.如果您想为dateString设置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)
Run Code Online (Sandbox Code Playgroud)

你得到输出为

在此输入图像描述

  • 但是日期没有正确的格式,我们需要根据参考资料进行转换 (2认同)

roy*_*roy 63

我总是用这个代码,而转换DateString .(斯威夫特3)

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

}
Run Code Online (Sandbox Code Playgroud)

并像这样打电话..

let today = Date()
today.toString(dateFormat: "dd-MM")
Run Code Online (Sandbox Code Playgroud)


Adr*_*ian 16

DateFormatter有些工厂日期样式适合那些懒得修改格式字符串的人.如果您不需要自定义样式,这里有另一个选项:

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

这为您提供以下样式:

short, medium, long, full
Run Code Online (Sandbox Code Playgroud)

用法示例:

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
Run Code Online (Sandbox Code Playgroud)


Bri*_*oya 7

您更新的代码。更新它。

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!)
Run Code Online (Sandbox Code Playgroud)


Kev*_*art 5

创建格式化程序时要记住的一点是,如果可以的话,请尝试重用同一实例,因为创建格式化程序的计算成本相当高。以下是我经常在应用程序中使用的模式,我可以在应用程序范围内共享相同的格式化程序,改编自 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
    }()
}
Run Code Online (Sandbox Code Playgroud)

用法:

let dateString = DateFormatter.sharedDateFormatter.string(from: Date())
Run Code Online (Sandbox Code Playgroud)