ios - 如何将 Int 添加到 NSDate 中?

标签 ios swift int nsdate

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

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

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

我该怎么做?

最佳答案

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

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

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

这个函数将接受我们的字符串并返回一个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分钟后。希望这有帮助🖖🏽

关于ios - 如何将 Int 添加到 NSDate 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38624090/

相关文章:

ios - MKMapItem 未在 MKPlacemark 上显示正确的信息

ios - 如何使用我的应用程序中使用的自定义颜色轻松支持浅色和深色模式?

Swift 3 UIPickerView 以编程方式开始旋转

c - 将字符串解析为 int 数组 - 收到警告 "makes pointer from integer without a cast"

python - 在 python 中将 float 转换为 int 的有效方法是什么?

ios - 如何在 IOS 中制作慢动作视频

iphone - 如何在iphone 的iCarousel 上设置CustomFrame?

ios - 如何在 Swift 3 中生成 JSON 字符串?

ios - Swift 5 iOS13 - 继续到另一个 Storyboard或未连接的 View Controller 而不创建卡 View

ios - Objective-C 检查带整数的数组是否包含整数