【问题标题】:Converting a date to a (non human-readable) string in Swift 3在 Swift 3 中将日期转换为(非人类可读的)字符串
【发布时间】:2017-06-08 08:52:10
【问题描述】:

我有一个 Date 对象,如下所示:

 2017-06-08 08:36:16 +0000

我需要将其转换为字符串,格式如下:

"2017-06-08T08:36:16Z"

我发布到的 REST api 只接受日期作为字符串。

我在网上找到的大多数信息都是关于将日期转换为人类可读的格式。如果可能的话,我什至可能只是“字符串化”我的日期对象,但是尝试将其转换为这样显然会失败。那里有大量“将日期转换为字符串”的问题,但还没有遇到过这样的问题。

知道怎么做吗?

【问题讨论】:

  • "2017-06-08T08:36:16Z" 是一个“非人类可读”的字符串吗? – 是什么阻止您使用DateFormatter
  • 可能只是 this question 的反面
  • @MartinR 抱歉,这令人困惑。我的意思是,像这样的大多数问题都需要像“2017 年 6 月 7 日”这样的字符串输出(您可能会输出给用户),而您很少(如果有的话)输出“2017-06-08T08:36: 16Z" 给用户。
  • 看看这个页面:nsdateformatter.com 在“设计”你的dateFormat 字符串时是一个很好的参考:)

标签: swift date swift3 nsdate nsdateformatter


【解决方案1】:

您所要做的就是将日期格式 (DateFormatter) 更改为所需的格式。

请注意,您给定日期 (2017-06-08 08:36:16 +0000) 的格式是:

yyyy-MM-dd HH:mm:ss Z

例如,假设给定的日期值是今天,您可以像这样读取它 - 作为一个字符串:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"

let givenDate = Date()
let stringGivenDate = dateFormatter.string(from: givenDate) // 2017-06-08 12:10:23 +0300

因此,将日期格式更改为:

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:SS'Z'"
let stringGivenDateWithDesiredFormat = dateFormatter.string(from: givenDate) // 2017-06-08T12:11:75Z

根据上面的代码 sn-p,您给定的所需格式 (2017-06-08T08:36:16Z) 是:

yyyy-MM-dd'T'HH:mm:SS'Z'

【讨论】:

    【解决方案2】:

    以下两种格式适合您。 yyyy-MM-dd HH:mm:ss Zyyyy-MM-dd'T'HH:mm:ss'Z'

    let input = "2017-06-08 08:36:16 +0000"
    let dateFormater = DateFormatter.init()
    dateFormater.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
    if let date = dateFormater.date(from: input) {
        dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
        let output = dateFormater.string(from: date)
        print(output)
    }
    

    【讨论】:

      【解决方案3】:

      试试这个

      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:SS'Z'"
      let dateDate =  NSDate()
      let stringDate = dateFormatter.string(from: date as Date)
      

      date2017-06-08 08:36:16 +0000 格式的 Date 对象

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-16
        • 1970-01-01
        • 1970-01-01
        • 2016-11-29
        • 1970-01-01
        • 1970-01-01
        • 2016-08-20
        • 1970-01-01
        相关资源
        最近更新 更多