保存日期组件在Swift 3中

保存日期组件在Swift 3中

问题描述:

我有麻烦节省时间。让我给你看一个截图,它会明确我想要在这里实现的目标。保存日期组件在Swift 3中

Screenshot

我每天节约作为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) 

正如你所看到的newComponentshour一部分是棘手的。我只需要提供它是9AM,12AM还是9PM。我怎么做? (btw。time只是一个Int我手动输入测试)

+0

“保存”是什么意思?您将其存储在用户默认值中? 向我们显示一段代码,以便我们可以为您提供帮助 –

+2

'日期'是日期。一个固定的时间点,无论时区是否显示为24小时制还是带有AM PM指示符。 – Abizern

+0

我加了我的代码!感谢提醒我... – Kira

据我所知,你使用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")!xxPM12 + Int("xx")!