【问题标题】:How to add an Int to a NSDate?如何将 Int 添加到 NSDate?
【发布时间】:2016-07-27 22:16:17
【问题描述】:

我目前正在以这种格式获取日期的 JSON 数据:

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

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

我该怎么做?

【问题讨论】:

标签: ios swift int nsdate


【解决方案1】:

因此,您可以通过大约一百万种不同的方式来执行此操作,但这可能不是您要在这里寻找的。玩这些东西的最好方法是在操场上,这样您就可以看到对代码的更改如何影响最终结果。

所以首先你需要一个可以将字符串作为参数的函数。

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

此函数将接收我们的string 并返回给我们NSDate

然后我们需要一个日期格式化程序,有很多不同的方式可以格式化一个日期,你可以在这里查看文档NSDateFormatter Documentation

所以这里是格式化程序"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ" 的示例,您可以很快看到不同的部分指的是日期的不同部分。 IE yyyy 是在这种情况下的年份会给我们类似2016 的东西。如果是yy,我们只会得到16

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

您还应该进行一些检查以确保您的代码安全。所以它应该看起来像这样。

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 NSTimeInterval 是 1 秒。所以做一些基本的数学

let min = 60
let hr = 60 * min

那么我们可以添加任意多的时间

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

20 分钟后。希望这会有所帮助??

【讨论】:

  • 这个信息量很大,比我在网上找到的任何东西都好,感谢您的帮助!
  • 我已经做了很多,但仍然需要不时查看它。我很高兴它有帮助。?
猜你喜欢
  • 2010-12-11
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 2015-03-20
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多