Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS Swift中将NSDate转换为字符串_Ios_Swift_Swift3_Nsdateformatter - Fatal编程技术网

在iOS Swift中将NSDate转换为字符串

在iOS Swift中将NSDate转换为字符串,ios,swift,swift3,nsdateformatter,Ios,Swift,Swift3,Nsdateformatter,我正在尝试将NSDate转换为字符串,然后更改格式。但是当我将NSDate传递给String时,它会产生空白 let formatter = DateFormatter() let myString = (String(describing: date)) formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let yourDate: Date? = formatter.date(from: myString) formatter.dateForm

我正在尝试将
NSDate
转换为
字符串
,然后更改格式。但是当我将
NSDate
传递给
String
时,它会产生空白

 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)

您可以从中获取详细信息。如果要设置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)
您得到的输出为


更新的代码。请更新它

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

分配
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日

在将
日期
转换为
字符串
时,我总是使用此代码。(Swift 3)

然后像这样打电话

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

您可以使用此扩展:

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!)
    }
}
并在视图控制器中这样使用它(替换为您的格式):


创建格式化程序时要记住的一点是,如果可以的话,尽量重用同一个实例,因为创建格式化程序在计算上相当昂贵。以下是我经常使用的应用程序模式,我可以在整个应用程序范围内共享相同的格式化程序

用法:

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

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

显示您的
日期
,它是当前日期或不是当前日期,我从Datepickershow获得
日期选择器
结果,但日期没有适当的格式,我们需要根据我们的要求进行转换感谢Anbu的工作,但您的日期是从类型数据到目前为止最简单的方法。当您实际上不需要时,日期格式化程序只是面向对象编程。
toString
reserved关键字。必须把它换成别的东西是的,我讨厌工厂的东西。比如为什么?让我在对象上调用一个方法。我认为它们在21世纪初很酷。
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