Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 如何将字符串日期转换为NSDate?_Ios_String_Swift_Nsdate - Fatal编程技术网

Ios 如何将字符串日期转换为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

我想将“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/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)
解决方案 用法 结果

更多信息

此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”。。等等。

此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