我正在尝试申请帮助戒烟,
我需要用户输入他的第一支香烟时间,以及每支香烟之间的时间,最后输入增加的时间以增加每支香烟之间的时间。然后我发送本地通知。
例如:假设他的第一支香烟是在7:00 AM,他每1小时吸1支香烟,并且他想再增加10分钟。
第1支香烟:7:002nd:8:10 /3日:9:20 /4th:10:30 .. etc
我尝试了很多解决方案,但从选择器视图中获取的日期格式存在一些问题,我需要使它们像“ hh:MM a”]
有帮助吗?
要获取其他格式的日期,可以从Date对象创建NSDate,然后使用NSDateFormatter格式化:
let date=NSDate(timeInterval: 0, since: yourDate)
let dateFormatter=DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
dateFormatter.setLocalizedDateFormatFromTemplate("hh:mm a")
String dateString=dateFormatter.string(from: date)
您可以从UIDatePicker中获取初始日期对象,或者当它发生更改并在其委托中调用一个方法时。
首先使用创建日期对象
let date = Date(timeIntervalSinceNow: 3600) // it may be any date whatever you want
要从日期组件创建触发器:
let triggerDaily = Calendar.current.dateComponents([hour,.minute,.second,], from: date)
现在在UNCalendarNotificationTrigger中传递该日期,并重复一次true
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDaily, repeats: true)
使用时间创建日期:
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31") // put your date and time here
如果是特定于语言环境的时间:
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
建议的解决方案还不够完善,因此您必须每小时创建一个通知,而使用此触发器
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (60*60) + (10*60), repeats: true)
60 * 60是您提到的小时,10 * 60是10分钟,将重复设置为true和viola,现在每70分钟触发一次通知。