创建 NSDate 并设置 AM 或 PM
Creating an NSDate and setting AM or PM
过去 4 小时我一直在努力解决这个问题,但似乎无法弄清楚如何解决这个问题。用户进入应用程序并 select 在日历上输入日期。 selected 日期只是一个 NSDate
。然后用户可以选择一个由 hours
、minutes
和 seconds
组成的时间,然后他们可以 select AM
或 PM
。
假设用户选择了 6:57 PM
的时间。我需要修改他们在日历上 select 编辑日期时创建的原始 NSDate
,并更改它的时间数据以匹配用户刚刚设置的 6:57 PM
时间。
我一直在使用 NSCalendar
class 的 dateBySettingHour
功能,效果很好。唯一的问题是我无法修改 AM/PM
值。我所能做的就是传递它的小时、分钟和秒数。这是代码:
calendar.dateBySettingHour(hours, minute: minutes, second: seconds, ofDate: selectedDate, options: NSCalendarOptions())
我一直在研究 NSDateFormatter
、NSDateComponents
和 NSCalendar
,并一直在研究这里的示例,但我似乎无法理解这一点,并且搞清楚。
对我来说,以 ISO 8601
日期格式创建最终日期的最简单、最有效的方法是什么?现在还有正确的时间信息,包括用户选择的 AM/PM
设置?
我知道尝试使用 dateBySettingHour
是不可能的,但此时我愿意尝试任何事情。
你能为 PM 传递 "hours + 12" 吗?
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"
过去 4 小时我一直在努力解决这个问题,但似乎无法弄清楚如何解决这个问题。用户进入应用程序并 select 在日历上输入日期。 selected 日期只是一个 NSDate
。然后用户可以选择一个由 hours
、minutes
和 seconds
组成的时间,然后他们可以 select AM
或 PM
。
假设用户选择了 6:57 PM
的时间。我需要修改他们在日历上 select 编辑日期时创建的原始 NSDate
,并更改它的时间数据以匹配用户刚刚设置的 6:57 PM
时间。
我一直在使用 NSCalendar
class 的 dateBySettingHour
功能,效果很好。唯一的问题是我无法修改 AM/PM
值。我所能做的就是传递它的小时、分钟和秒数。这是代码:
calendar.dateBySettingHour(hours, minute: minutes, second: seconds, ofDate: selectedDate, options: NSCalendarOptions())
我一直在研究 NSDateFormatter
、NSDateComponents
和 NSCalendar
,并一直在研究这里的示例,但我似乎无法理解这一点,并且搞清楚。
对我来说,以 ISO 8601
日期格式创建最终日期的最简单、最有效的方法是什么?现在还有正确的时间信息,包括用户选择的 AM/PM
设置?
我知道尝试使用 dateBySettingHour
是不可能的,但此时我愿意尝试任何事情。
你能为 PM 传递 "hours + 12" 吗?
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"