在过去的4个小时里,我一直在努力解决这个问题,但似乎无法解决这个问题。用户进入应用程序并选择日历上的日期。所选日期只是一个NSDate
。然后,用户可以选择由hours
、minutes
和seconds
组成的时间,然后可以选择AM
或PM
。
所以假设用户选择的时间是6:57 PM
。我需要修改他们在日历上选择日期时创建的原始NSDate
并更改时间数据以匹配用户刚设置的6:57 PM
时间。
我一直在使用dateBySettingHour
类的NSCalendar
函数,它工作得很好。唯一的问题是我不能修改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/