【问题标题】:Swift 4 days until date [duplicate]Swift 距离日期还有 4 天 [重复]
【发布时间】:2018-01-08 20:39:26
【问题描述】:

我正在努力计算某些日期之间的天数。

我想计算距离新年的天数或分钟数。 我尝试了一种使用 dateComponents 在另一篇文章中看到的方法,但我无法计算。

如果有人可以提供帮助,我会非常高兴。

谢谢!

【问题讨论】:

  • 还有哪些帖子?你尝试了什么?怎么没用?
  • 您能否发布您尝试使用的代码?

标签: ios swift


【解决方案1】:

查看您尝试提供的建议会很有帮助,但尽管如此,您可以使用 NSCalendar 的组件来完成此操作。

let calendar = Calendar.current
let startOfDay1 = calendar.startOfDay(for: date1)
let startOfDay2 = calendar.startOfDay(for: date2)
let components = calendar.dateComponents([.day], from: startOfDay1, to: startOfDay2)

您可以自定义上面的内容以从您的日期对象中获取更具体的分钟。

https://developer.apple.com/documentation/foundation/nscalendar/1407925-components

编辑:对于 Swift 4,您不需要桥接。您可以直接使用日历(上面的编辑代码)。 https://developer.apple.com/documentation/foundation/calendar/2293176-datecomponents

【讨论】:

  • 为什么使用NSCalendar?这是 Swift4,除非您有充分的理由这样做,否则您不应该使用 Foundation 数据类型。您应该使用Calendar 而不是NSCalendar
  • 好点@DávidPásztor NSCalendar 桥接日历,它有自己的组件。
  • 如果您想进行对时间不敏感的日历计算,您应该使用中午而不是午夜。请注意,并非每天上午 12:00 开始 devstreaming.apple.com/videos/wwdc/2013/… 查看第 32 页。您也可以观看视频 developer.apple.com/videos/play/wwdc2013/227
  • @LeoDabus:startOfDay(for:) 不解决这个问题吗?我希望它返回一天的第一个 valid 日期,不一定是午夜。
  • @LeoDabus:你的例子对我不起作用,可能是因为时区不同。但无论如何:你是对的,它确实有所作为,同时我也得出了同样的结论。
猜你喜欢
  • 2014-04-13
  • 2013-07-15
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
相关资源
最近更新 更多