过去 4 小时我一直在试图解决这个问题,但似乎不知道如何解决这个问题。用户进入应用程序并在日历上选择一个日期。所选日期只是一个NSDate
。然后,用户可以选择由小时
、分钟
和秒
组成的时间,然后他们可以选择AM
或PM
。
假设用户选择下午 6:57
的时间。我需要修改在日历上选择日期时创建的原始 NSDate
,并更改其时间数据以匹配用户刚刚的 6:57 PM
时间设置。
我一直在使用 NSCalendar
类的 dateBySettingHour
函数,它效果很好。唯一的问题是我无法修改 AM/PM
值。我所能做的就是度过几小时、几分钟、几秒钟。代码如下:
calendar.dateBySettingHour(hours, minute: minutes, second: seconds, ofDate: selectedDate, options: NSCalendarOptions())
我一直在使用 NSDateFormatter
、NSDateComponents
和 NSCalendar
并浏览了这里的示例,但我就是看不出来让我全神贯注并找出答案。
对我来说,以 ISO 8601
日期格式创建最终日期并具有与原始 NSDate< 相同的正确月、日和年信息的最简单、最有效的方法是什么
,但现在也有正确的时间信息,包括用户选择的 AM/PM
设置?
我知道尝试使用 dateBySettingHour
是不可能的,但我愿意在这一点上尝试任何事情。
最佳答案
Xcode 8.3.2 • Swift 3.1
let date = Date()
let hour = 6
let minute = 57
let second = 0
let pm = true
let hours24 = hour == 12 && pm ? 12 :
hour == 12 && !pm ? 0 :
!pm ? hour : hour + 12
let dateWithHour = Calendar.current.date(bySettingHour: hours24, minute: minute, second: second, of: date) // Jun 4, 2017, 6:57 PM"
关于swift - 创建 NSDate 并设置 AM 或 PM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34170857/