保存日期组件在Swift 3中
问题描述:
我有麻烦节省时间。让我给你看一个截图,它会明确我想要在这里实现的目标。保存日期组件在Swift 3中
我每天节约作为Int
和我创建一个新的日期,那就是处理。唯一缺少的是增加时间到那个日期。如何在日期保存AM或PM?
此外,这会影响在iPhone上使用24小时时间的用户吗?如果我节省下午9点,他们的系统是否会知道我的意思是21小时?
好吧,我忘记了密码,那就是: 这是一段代码,在那里我安排的通知
let calendar = Calendar.autoupdatingCurrent
guard let lastPeriod = RealmManager.sharedInstance.queryLastPeriod(), let predictionDate = lastPeriod.predictionDate else {
return
}
let day = predictionDate.day - DefaultsManager.getNotificationDays()
let newComponents = DateComponents(calendar: calendar, timeZone: .current, year: predictionDate.year, month: predictionDate.month, day: day, hour: time, minute: 0)
正如你所看到的newComponents
hour
一部分是棘手的。我只需要提供它是9AM,12AM还是9PM。我怎么做? (btw。time
只是一个Int
我手动输入测试)
答
据我所知,你使用24小时样式(还有什么?)。
let dc = DateComponents(year: 2016, month: 01, day: 11, hour: 14, minute: 20)
let d = Calendar.current.date(from: dc)
//> d: Date? = 2016-01-11 13:20:00 UTC
这是正确的,因为我目前的时区是欧洲中部时间(UTC + 1)。
您可以使用DateFormatter
以不同格式打印日期。例如:
let df = DateFormatter()
df.dateStyle = DateFormatter.Style.short
df.timeStyle = DateFormatter.Style.short
df.string(from: d!)
//> R4: String = "11/01/16 14:20"
返回到我的时区!
DateFormatter
也有一个方法date(from: String)
,你可以用它来分析日期:
df.date(from: "11/01/16 14:20")
//> R5: Date? = 2016-01-11 13:20:00 UTC
你将不得不使用的Calendar
和/或DateFormatter
设置,以获得12小时式输出。在输入网站上,您可以将xxAM
映射到Int("xx")!
和xxPM
到12 + Int("xx")!
。
“保存”是什么意思?您将其存储在用户默认值中? 向我们显示一段代码,以便我们可以为您提供帮助 –
'日期'是日期。一个固定的时间点,无论时区是否显示为24小时制还是带有AM PM指示符。 – Abizern
我加了我的代码!感谢提醒我... – Kira