Swift 创建NSDate并设置AM或PM
在过去的4个小时里,我一直在试图解决这个问题,但似乎不知道如何解决这个问题。用户进入应用程序并在日历上选择日期。所选日期只是一个Swift 创建NSDate并设置AM或PM,swift,nsdate,nsdateformatter,nscalendar,nsdatecomponents,Swift,Nsdate,Nsdateformatter,Nscalendar,Nsdatecomponents,在过去的4个小时里,我一直在试图解决这个问题,但似乎不知道如何解决这个问题。用户进入应用程序并在日历上选择日期。所选日期只是一个NSDate。然后,用户可以选择由hours、minutes和seconds组成的时间,然后他们可以选择AM或PM 因此,假设用户选择的时间为6:57 PM。我需要修改他们在日历上选择日期时创建的原始NSDate,并更改其时间数据以匹配用户刚刚设置的6:57 PM时间 我一直在使用NSCalendar类的datebysettingour函数,效果非常好。唯一的问题是我无
NSDate
。然后,用户可以选择由hours
、minutes
和seconds
组成的时间,然后他们可以选择AM
或PM
因此,假设用户选择的时间为6:57 PM
。我需要修改他们在日历上选择日期时创建的原始NSDate
,并更改其时间数据以匹配用户刚刚设置的6:57 PM
时间
我一直在使用NSCalendar
类的datebysettingour
函数,效果非常好。唯一的问题是我无法修改AM/PM
值。我所能做的就是把时间、分和秒都浪费掉。代码如下:
calendar.dateBySettingHour(hours, minute: minutes, second: seconds, ofDate: selectedDate, options: NSCalendarOptions())
我一直在玩弄NSDateFormatter
、NSDateComponents
和NSCalendar
,并在这里介绍了一些示例,但我似乎无法理解这一点
对于我来说,以ISO 8601
日期格式创建最终日期最简单、最有效的方法是什么?该格式具有与原始NSDate
相同的月、日和年信息,但现在也具有正确的时间信息,包括用户选择的AM/PM
设置
我知道通过设置您的日期来使用
是不可能的,但在这一点上我愿意尝试任何事情。您能将“小时+12”传递给PM吗?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"
用户如何选择时间?使用UIDatePicker
?或者其他方式?为什么不在用户选择PM时增加12个小时?哇,是时候睡觉了,离开显示器了我想虽然这个答案很简短,只是一个问题,但这个答案显然为用户3344977提供了一个解决问题的方法,基本上,和公认的答案一样(发布时间比此答案晚了一分钟)。