x4h*_*h1d 338
试试这个:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = /* find out and place date format from
* http://userguide.icu-project.org/formatparse/datetime
*/
let date = dateFormatter.dateFromString(/* your_date_string */)
Run Code Online (Sandbox Code Playgroud)
要进一步查询,请分别检查Objective-C和Swift 的Foundation框架的NSDateFormatter和DateFormatter类.
Swift 3及更高版本(包括Swift 4)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = /* date_format_you_want_in_string from
* http://userguide.icu-project.org/formatparse/datetime
*/
guard let date = dateFormatter.date(from: /* your_date_string */) else {
fatalError("ERROR: Date conversion failed due to mismatched format.")
}
// use date constant here
Run Code Online (Sandbox Code Playgroud)
Kia*_*rom 71
斯威夫特4
import Foundation
let dateString = "2014-07-15" // change to your date format
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: dateString)
println(date)
Run Code Online (Sandbox Code Playgroud)
斯威夫特3
import Foundation
var dateString = "2014-07-15" // change to your date format
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
var date = dateFormatter.dateFromString(dateString)
println(date)
Run Code Online (Sandbox Code Playgroud)
我可以用这段代码来做.
idr*_*dız 54
func convertDateFormatter(date: String) -> String
{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"//this your string date format
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let date = dateFormatter.dateFromString(date)
dateFormatter.dateFormat = "yyyy MMM EEEE HH:mm"///this is what you want to convert format
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let timeStamp = dateFormatter.stringFromDate(date!)
return timeStamp
}
Run Code Online (Sandbox Code Playgroud)
针对Swift 3进行了更新.
func convertDateFormatter(date: String) -> String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"//this your string date format
dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
let date = dateFormatter.date(from: date)
dateFormatter.dateFormat = "yyyy MMM EEEE HH:mm"///this is what you want to convert format
dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
let timeStamp = dateFormatter.string(from: date!)
return timeStamp
}
Run Code Online (Sandbox Code Playgroud)
Vas*_*huk 17
Swift 4,xCode 9.2/Swift 3,xCode 8.2.1
import Foundation
extension DateFormatter {
convenience init (format: String) {
self.init()
dateFormat = format
locale = Locale.current
}
}
extension String {
func toDate (dateFormatter: DateFormatter) -> Date? {
return dateFormatter.date(from: self)
}
func toDateString (dateFormatter: DateFormatter, outputFormat: String) -> String? {
guard let date = toDate(dateFormatter: dateFormatter) else { return nil }
return DateFormatter(format: outputFormat).string(from: date)
}
}
extension Date {
func toString (dateFormatter: DateFormatter) -> String? {
return dateFormatter.string(from: self)
}
}
Run Code Online (Sandbox Code Playgroud)
var dateString = "14.01.2017T14:54:00"
let dateFormatter = DateFormatter(format: "dd.MM.yyyy'T'HH:mm:ss")
let date = Date()
print("original String with date: \(dateString)")
print("date String() to Date(): \(dateString.toDate(dateFormatter: dateFormatter)!)")
print("date String() to formated date String(): \(dateString.toDateString(dateFormatter: dateFormatter, outputFormat: "dd MMMM")!)")
let dateFormatter2 = DateFormatter(format: "dd MMM HH:mm")
print("format Date(): \(date.toString(dateFormatter: dateFormatter2)!)")
Run Code Online (Sandbox Code Playgroud)
小智 15
如果您需要经常将字符串解析为日期,则可能需要将该功能移动到扩展名中.我创建了一个sharedCode.swift文件并将扩展名放在那里:
extension String
{
func toDateTime() -> NSDate
{
//Create Date Formatter
let dateFormatter = NSDateFormatter()
//Specify Format of String to Parse
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSxxx"
//Parse into NSDate
let dateFromString : NSDate = dateFormatter.dateFromString(self)!
//Return Parsed Date
return dateFromString
}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果您想将字符串转换为NSDate,您可以编写如下内容:
var myDate = myDateString.toDateTime()
Run Code Online (Sandbox Code Playgroud)
对于Swift 3
func stringToDate(_ str: String)->Date{
let formatter = DateFormatter()
formatter.dateFormat="yyyy-MM-dd hh:mm:ss Z"
return formatter.date(from: str)!
}
func dateToString(_ str: Date)->String{
var dateFormatter = DateFormatter()
dateFormatter.timeStyle=DateFormatter.Style.short
return dateFormatter.string(from: str)
}
Run Code Online (Sandbox Code Playgroud)
Apple提到的第一件事是你缓存你的格式化程序......
用于效率的缓存格式化器 创建日期格式化程序并不是一种廉价的操作....缓存单个实例...
使用全球......
let df : DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
return formatter
}()
Run Code Online (Sandbox Code Playgroud)
然后在任何地方使用该格式化器......
let s = df.string(from: someDate)
Run Code Online (Sandbox Code Playgroud)
要么
let d = df.date(from: someString)
Run Code Online (Sandbox Code Playgroud)
或者在DateFormatter上使用任何其他许多方便的方法.
(如果你在String上写一个扩展名,你的代码完全是"颠倒" - 你不能使用任何dateFormatter调用!)
请注意,通常你会有一些全局变量..例如"formatForClient""formatForPubNub""formatForDisplayOnInvoiceScreen"..等等.
| 归档时间: |
|
| 查看次数: |
186873 次 |
| 最近记录: |