Ios 如何将字符串日期转换为NSDate?
我想将“2014-07-15 06:55:14.198000+00:00”此字符串日期转换为Swift格式的NSDate。尝试以下操作:Ios 如何将字符串日期转换为NSDate?,ios,string,swift,nsdate,Ios,String,Swift,Nsdate,我想将“2014-07-15 06:55:14.198000+00:00”此字符串日期转换为Swift格式的NSDate。尝试以下操作: let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = /* find out and place date format from * http://userguide.icu-project.org/formatparse/d
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 */)
用于Objest-C和SWIFT的基础框架的进一步查询、检查和分类。
Swift 3及更高版本(包括Swift 4) 试试这个: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 */)
用于Objest-C和SWIFT的基础框架的进一步查询、检查和分类。
Swift 3及更高版本(包括Swift 4)Swift 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)
Swift 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)
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)
}
我可以用这个代码来做。Swift 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)
import Foundation
let now : String = "2014-07-16 03:03:34 PDT"
var date : NSDate
var dateFormatter : NSDateFormatter
date = dateFormatter.dateFromString(now)
date // $R6: __NSDate = 2014-07-16 03:03:34 PDT
Swift 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)
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)
}
我可以用这个代码来做
import Foundation
let now : String = "2014-07-16 03:03:34 PDT"
var date : NSDate
var dateFormatter : NSDateFormatter
date = dateFormatter.dateFromString(now)
date // $R6: __NSDate = 2014-07-16 03:03:34 PDT
如果您需要经常将字符串解析为日期,您可能需要将功能移动到扩展中。我创建了一个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
}
}
然后,如果要将字符串转换为NSDate,只需编写如下内容:
var myDate = myDateString.toDateTime()
如果需要经常将字符串解析为日期,则可能需要将该功能移动到扩展中。我创建了一个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
}
}
然后,如果要将字符串转换为NSDate,只需编写如下内容:
var myDate = myDateString.toDateTime()
为了在Swift中添加日期格式内的字符串,我这样做了
var dataFormatter:NSDateFormatter = NSDateFormatter()
dataFormatter.dateFormat = "dd-MMMM 'at' HH:mm a"
cell.timeStamplbl.text = dataFormatter.stringFromDate(object.createdAt)
为了在Swift中添加日期格式内的字符串,我这样做了
var dataFormatter:NSDateFormatter = NSDateFormatter()
dataFormatter.dateFormat = "dd-MMMM 'at' HH:mm a"
cell.timeStamplbl.text = dataFormatter.stringFromDate(object.createdAt)
更新为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
}
更新为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
}
Swift支持扩展,通过扩展,您可以向现有的
类
、结构
、枚举
、或协议
类型添加新功能
通过使用extension
关键字扩展对象,可以向NSDate
对象添加新的init
函数
extension NSDate
{
convenience
init(dateString:String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyyMMdd"
dateStringFormatter.locale = NSLocale(localeIdentifier: "fr_CH_POSIX")
let d = dateStringFormatter.dateFromString(dateString)!
self.init(timeInterval:0, sinceDate:d)
}
}
现在,您可以使用以下命令初始化NSDate对象:
let myDateObject = NSDate(dateString:"2010-12-15 06:00:00")
Swift支持扩展,通过扩展,您可以向现有的
类
、结构
、枚举
、或协议
类型添加新功能
通过使用extension
关键字扩展对象,可以向NSDate
对象添加新的init
函数
extension NSDate
{
convenience
init(dateString:String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyyMMdd"
dateStringFormatter.locale = NSLocale(localeIdentifier: "fr_CH_POSIX")
let d = dateStringFormatter.dateFromString(dateString)!
self.init(timeInterval:0, sinceDate:d)
}
}
现在,您可以使用以下命令初始化NSDate对象:
let myDateObject = NSDate(dateString:"2010-12-15 06:00:00")
自Swift 3以来,许多NS前缀已被删除
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
/* date format string rules
* http://userguide.icu-project.org/formatparse/datetime
*/
let date = dateFormatter.date(from: dateString)
自Swift 3以来,许多NS前缀已被删除
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
/* date format string rules
* http://userguide.icu-project.org/formatparse/datetime
*/
let date = dateFormatter.date(from: dateString)
细节
- Swift 4,Xcode 9.2
- Swift 5,Xcode 10.2(10E125)
- Swift 4,Xcode 9.2
- Swift 5,Xcode 10.2(10E125)
let df : DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
return formatter
}()
然后只要在任何地方使用格式化程序
let s = df.string(from: someDate)
或
或者在DateFormatter上使用其他许多方便的方法
就这么简单。
(如果您在字符串上编写扩展名,您的代码将完全“颠倒”——您不能使用任何dateFormatter调用!)
请注意,通常您会有一些这样的全局变量。。例如“formatForClient”“formatForPubNub”“FormatForDisplayInVoiceScreen”。。等等。此QA页面上的代码片段是“颠倒的”。。。
苹果提到的第一件事是缓存格式化程序…
缓存格式化程序以提高效率
创建日期格式化程序不是一个便宜的操作。。。缓存单个实例
使用全局
let df : DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
return formatter
}()
然后只要在任何地方使用格式化程序
let s = df.string(from: someDate)
或
或者在DateFormatter上使用其他许多方便的方法
就这么简单。
(如果您在字符串上编写扩展名,您的代码将完全“颠倒”——您不能使用任何dateFormatter调用!)
请注意,通常您会有一些这样的全局变量。。例如“formatForClient”“formatForPubNub”“FormatForDisplayInVoiceScreen”。。Swift 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)
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)
}
适用于Swift 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)
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)
}
对于SWIFT 3.1
func convertDateStringToDate(longDate: String) -> String{
/* INPUT: longDate = "2017-01-27T05:00:00.000Z"
* OUTPUT: "1/26/17"
* date_format_you_want_in_string from
* http://userguide.icu-project.org/formatparse/datetime
*/
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: longDate)
if date != nil {
let formatter = DateFormatter()
formatter.dateStyle = .short
let dateShort = formatter.string(from: date!)
return dateShort
} else {
return longDate
}
}
注意:如果SWIFT 3.1出现错误,这将返回原始字符串
func convertDateStringToDate(longDate: String) -> String{
/* INPUT: longDate = "2017-01-27T05:00:00.000Z"
* OUTPUT: "1/26/17"
* date_format_you_want_in_string from
* http://userguide.icu-project.org/formatparse/datetime
*/
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: longDate)
if date != nil {
let formatter = DateFormatter()
formatter.dateStyle = .short
let dateShort = formatter.string(from: date!)
return dateShort
} else {
return longDate
}
}
注意:如果出现错误,这将返回原始字符串
2个有用的转换:
string(from: Date) // to convert from Date to a String
date(from: String) // to convert from String to Date
用法:
一,
二,
Swift 3,4:
2个有用的转换:
string(from: Date) // to convert from Date to a String
date(from: String) // to convert from String to Date
用法:
一,
二,
这是我的工作
import Foundation
import UIKit
//dateString = "01/07/2017"
private func parseDate(_ dateStr: String) -> String {
let simpleDateFormat = DateFormatter()
simpleDateFormat.dateFormat = "dd/MM/yyyy" //format our date String
let dateFormat = DateFormatter()
dateFormat.dateFormat = "dd 'de' MMMM 'de' yyyy" //format return
let date = simpleDateFormat.date(from: dateStr)
return dateFormat.string(from: date!)
}
这是我的工作
import Foundation
import UIKit
//dateString = "01/07/2017"
private func parseDate(_ dateStr: String) -> String {
let simpleDateFormat = DateFormatter()
simpleDateFormat.dateFormat = "dd/MM/yyyy" //format our date String
let dateFormat = DateFormatter()
dateFormat.dateFormat = "dd 'de' MMMM 'de' yyyy" //format return
let date = simpleDateFormat.date(from: dateStr)
return dateFormat.string(from: date!)
}
下面是一些可以在swift iOS中使用的字符串到日期格式转换选项
2018年12月27日星期四
format=EEEE,MMM d,yyyy
2018年12月27日
format=MM/dd/yyyy
12-27-2018 09:59
format=MM dd yyyy HH:MM
12月27日上午9:59
format=mmmd,h:mma
2018年12月
format=MMMM yyyy
2018年12月27日
format=MMM d,yyyy
2018年12月27日星期四09:59:19+0000
format=E,d MMM yyy HH:mm:ss Z
2018-12-27T09:59:19+0000
format=yyyy-MM-dd'HH:MM:ssZ
27.12.18
format=dd.MM.yy
09:59:19.815
format=HH:mm:ss.SSS
下面是一些可以在swift iOS中使用的字符串到日期格式转换选项
2018年12月27日星期四
format=EEEE,MMM d,yyyy
2018年12月27日
format=MM/dd/yyyy
12-27-2018 09:59
format=MM dd yyyy HH:MM
12月27日上午9:59
format=mmmd,h:mma
2018年12月
format=MMMM yyyy
2018年12月27日
f