【问题标题】:I tried to display date in 'dd-mm-yyyy' format in swift3 but it display nil, can you check my below code.我试图在 swift3 中以 'dd-mm-yyyy' 格式显示日期,但它显示为 nil,你能检查我下面的代码吗?
【发布时间】:2017-08-10 10:48:48
【问题描述】:

我从 JSON 服务中检索了日期,并尝试将“2017-07-18T00:00:00”日期显示为“18-07-2017”,但下面的代码返回 nil,您可以查看下面的代码。

let date1 = item["StartDate"] as? AnyObject //2017-07-18T00:00:00
 let formatter = DateFormatter()
 formatter.dateFormat = "dd.MM.yyyy"
 let TestDateTime = formatter.date(from: date1)
 print("zday:\(TestDateTime)")

【问题讨论】:

  • 您有一个字符串2017-07-18T00:00:00,并且您正尝试使用格式dd.MM.yyyy 对其进行解析。那不可能是正确的。相反,您必须使用正确的格式 dd-MM-yyyy'T'HH:mm:ss 将其解析为 Date,然后使用您的格式将其格式化为 String
  • 正确的语法是 formatter.string(from: Date),而不是 formatter.string.date(from: Date)

标签: json swift date


【解决方案1】:

String 表示创建Date 对象时,您需要指定输入字符串的格式。创建Date 对象后,您可以使用不同的日期格式来生成所需格式的日期的String 表示。

let date1 = item["StartDate"] as? String //2017-07-18T00:00:00
let formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy'T'hh:mm:ss"
let testDateTime = formatter.date(from: date1)
let outputFormatter = DateFormatter()
outputFormatter.dateFormat = "dd-MM-yyyy"
print("zday:\(outputFormatter.string(from: testDateTime)")

【讨论】:

  • 我试过上面的代码,它显示,"JobDescription":

    这是为了测试位置

    , "JobPositionStatus": Open]]致命错误:在展开可选值 (lldb) 时意外发现 nil
  • 错误前的部分与这段代码无关。对于这个错误,我猜你是不安全展开date1,不要那样做,使用安全展开。
【解决方案2】:

试试这个代码

func convertDateFormater(_ date: String) -> String
    {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd-MM-yyyy'T'hh:mm:ss"
        let date = dateFormatter.date(from: date)
        dateFormatter.dateFormat = "dd-MM-yyyy"
        return  dateFormatter.string(from: date!)
    }

【讨论】:

    【解决方案3】:

    正确的语法是

    formatter.string(from: Date)
    

    所以你的代码应该是:

    let formatter = DateFormatter()
    formatter.dateFormat = "dd.MM.yyyy"
    let TestDateTime = formatter.string(from: date1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      相关资源
      最近更新 更多