如何将Int添加到NSDate?

时间:2016-07-27 22:16:17

标签: ios swift int nsdate

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

TestBuilder

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

所以你可以用百万种不同的方式做到这一点,但这可能不是你在这里寻找的。玩这些东西的最佳方式是在游乐场中,您可以看到代码的更改如何影响最终结果。

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

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

此功能将接收我们的string并返回NSDate

然后我们需要一个日期格式化程序,您可以通过多种不同的方式设置日期格式,您可以在此处查看相关文档NSDateFormatter Documentation

所以这是一个格式化程序"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"的示例,您可以很快看到不同的部分引用日期的不同部分。在这种情况下,今年yyyy的IE将为我们提供类似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分钟后。希望这有帮助