swift如何向 NSDate 添加一个 Int?

标签: ios Swift NSDate
发布时间: 2017/3/6 23:25:10
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我目前得到的 JSON 数据在这种格式的日期︰

Date = "2016-07-21T18:32:24.347Z"

我需要能够添加 Int 或浮点数,表示分钟 (共 60 分)

怎么可以这样?

解决方法 1:

所以有像 100 万不同的方式,你可以这样做,但这是很可能没有什么你正在寻找在这里。最好的方法来玩这些东西会在操场上这种方式,你可以看到对你的代码效果结束更改的结果。

因此,首先你需要可以采取一个字符串作为参数的函数。

func dateFromJSON(dateString: String?) -> NSDate? {}

此函数将以我们 string 和返回我们NSDate

然后我们需要日期格式化程序,有许多不同的方式,您可以设置日期的格式,您可以签出的文档上他们在这里NSDateFormatter 文档

因此,这里是格式化程序示例 "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ" 你可以很快看到,不同部位是指不同的日期。IE yyyy 年在这种情况下会给我们一些像是 2016 。如果它是 yy 我们只会得到 16

初始化 ─ 然后应用我们的格式。

你也应该把扔进一些检查,以确保您的代码的安全。所以看起来应该像这样。

func dateFromWebJSON(dateString: String?) -> NSDate? {
   guard let dateString = dateString else {
    return nil
   }
  let formatter = NSDateFormatter()
  let date = ["yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"].flatMap { (dateFormat: String) -> NSDate? in
    formatter.dateFormat = dateFormat
    return formatter.dateFromString(dateString)
    }.first

  assert(date != nil, "Failed to convert date")
  return date
}

所以,现在我们可以调用

let time = dateFromWebAPIString(date)
print(time) //  Jul 21, 2016, 12:32 PM

现在要添加时间,你必须记住 1 惯性是 1 秒。所以做一些基本的数学

let min = 60
let hr = 60 * min

然后,我们可以添加你想要的时间

 let newTime = time?.dateByAddingTimeInterval(NSTimeInterval(20 * min))
 print(newTime) //  "Jul 21, 2016, 12:52 PM"

20 分钟后。希望这有助于 🖖🏽

赞助商