我节省了时间。让我给你看一个截图,它会说明我在这里想要实现的目标。
我正在以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)
正如您所看到hour
newComponents
的一部分是棘手的。我只需要提供它是9AM,12AM或9PM。我怎么做? (顺便说一下。time
只是Int
我手动输入进行测试)
答案 0 :(得分:0)
据我所知,你使用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
这是正确的,因为我当前的时区是CET(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
的设置才能获得12h风格的输出。在输入网站上,您只需将xxAM
映射到Int("xx")!
,将xxPM
映射到12 + Int("xx")!
。