【问题标题】:NSDate and UIDatepicker SwiftNSDate 和 UIDatepicker Swift
【发布时间】:2016-05-26 20:35:23
【问题描述】:

我在Swift 中锻炼,在Dates 中进行实验。
我制作了一个显示当前日期的应用程序,然后通过将日期插入NSCalendar 组件来添加日期。

所有这些都很好,通过增加一天我得到第二天。 我的问题是我有一个只显示时间的UIDatePicker。我试图插入我给定的小时和分钟,但我将这些数字添加到未来日期,因为它与当前日期保持相同的小时和分钟。

所以我的问题是:

  • 有没有办法获取当前日期,然后以某种方式将其小时和分钟值更改为 0?
  • 是否可以将未来时间的小时和分钟值替换为我通过 UIDatePicker 提供的值?

我在这里想要完成的是能够在我想要的时间将未来的事件添加到日历中,而不是在与我即将添加事件的时间相同的未来日期.

欢迎任何提示。

【问题讨论】:

  • 您可以使用 NSCalendar 方法 dateBySettingHour 并设置所需的时间,或者如果您想要一天中的第一个时间,您可以使用 startOfDayForDate。请记住,不一定是上午 12 点

标签: swift nsdate uidatepicker nscalendar


【解决方案1】:

使用NSCalendar类:

let date = NSDate() // date with current time
let calendar = NSCalendar.currentCalendar()
let date2 = calendar.dateBySettingHour(0, minute: 0, second: 0, ofDate: date, options: []) // date with zero time

【讨论】:

  • 这有点工作,但正如@leo 所说,这不一定是上午 12 点,给我的时间是 22:00。我必须让 date2 = calendar.dateBySettingHour(2, minute: 0, second: 0, ofDate: date, options: []) 这在某种程度上只对我的 timeZone 正确,并且在时间更改后中断. +-1 小时(每年 2 次)。
  • 我想如果我将小时设置为 0 是没有问题的。仅当我打印日期而日历记录正确的时间时才会显示差异。
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多