【问题标题】:How to convert string to date to string in Swift iOS? [duplicate]如何在 Swift iOS 中将字符串转换为日期字符串? [复制]
【发布时间】:2016-01-21 13:14:15
【问题描述】:

我学得很快,并且在将日期字符串转换为 NSDate 为字符串时感到震惊。我正在以这种格式获取日期字符串“Thu, 22 Oct 2015 07:45:17 +0000”。我需要以 MM-dd-yyyy 格式显示日期。我尝试了以下代码,但它返回“null”。

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
let dateObj = dateFormatter.dateFromString(dateString!)
print("Dateobj: \(dateObj)")

谁能帮忙看看哪里出错了?期待帮助。提前致谢。

【问题讨论】:

标签: ios string swift nsdate nsdateformatter


【解决方案1】:

首先,您需要将字符串转换为 NSDate 及其格式。然后,将dateFormatter 更改为简单格式并将其转换回字符串。

斯威夫特 3

let dateString = "Thu, 22 Oct 2015 07:45:17 +0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz"
dateFormatter.locale = Locale.init(identifier: "en_GB")

let dateObj = dateFormatter.date(from: dateString)

dateFormatter.dateFormat = "MM-dd-yyyy"
print("Dateobj: \(dateFormatter.string(from: dateObj!))")

打印结果为:Dateobj: 10-22-2015

【讨论】:

  • Swift 3 中很相似,而不是dateFormatter.stringFromDate(date)dateFormatter.string(from:date)
  • 如果您的设备因为“星期四”而不是英文,这将崩溃,您必须指定语言环境。在 swift 3 中:dateFormatter.locale = Locale.init(identifier: "en_GB")
  • NSDateFormatter 已替换为 DateFormatter
  • 注意:如果日期应本地化,则此答案不正确。例如在各个国家/地区的月份和日期被交换
  • 这使用了错误的语言环境。使用日期格式化程序将固定格式字符串转换为Date时需要使用en_US_POSIX
【解决方案2】:
//String to Date Convert

var dateString = "2014-01-12"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let s = dateFormatter.dateFromString(dateString)
println(s)


//CONVERT FROM NSDate to String  

let date = NSDate()
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" 
var dateString = dateFormatter.stringFromDate(date)
println(dateString)  

【讨论】:

    【解决方案3】:

    Swift 2 及以下

    let date = NSDate()
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "MM-dd-yyyy"
    var dateString = dateFormatter.stringFromDate(date)
    println(dateString)
    

    在 Swift 3 及更高版本中,现在将写为:

    let date = Date()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM-dd-yyyy"
    var dateString = dateFormatter.string(from: date)
    

    【讨论】:

    • 这是从日期转换为字符串
    【解决方案4】:

    请参阅 Gary Makin 的回答。您需要更改格式或数据。因为您拥有的数据不适合所选格式。例如此代码工作正确:

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "MM-dd-yyyy"
    let dateObj = dateFormatter.dateFromString("10 10 2001")
    print("Dateobj: \(dateObj)")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多