2016-12-26 7 views
3

時間を節約するのに苦労します。私はここで達成しようとしていることを明確にするスクリーンショットを表示させてください。Swiftに日付コンポーネントを保存する3

Screenshot

私はIntとして一日保存していると私は、新しい日付を作成することから、それが処理されます。行方不明のものだけがその日付に時間を追加しています。どのようにしてAMまたはPMを日付に保存できますか?

また、iPhoneで24時間制を使用しているユーザーにも影響しますか?私が9時を保存すれば、彼らのシステムは私が本当に21時間を意味することを知っていますか?

さて、私はここにある、コードを忘れてしまった: これはあなたがnewComponentshour一部がトリッキーであることを見ることができるように、私は通知

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) 

をスケジュールしていたコードの一部です。私はそれが午前9時、午前12時または午後9時であることを提供する必要があります。それ、どうやったら出来るの? (btw。timeはちょうどIntです。私は手動でテスト用に入力しています)

+0

「保存する」とはどういう意味ですか?あなたはそれをユーザーのデフォルトに保存しますか? 私たちがあなたを助けることができるようにコードを示してください –

+2

「日付」は日付です。タイムゾーンに関係なく、または24時間の時計として表示されるかAM PMインジケータで表示されるかにかかわらず、固定の時刻です。 – Abizern

+0

私のコードを追加しました!私に思い出させてくれてありがとう。 – Kira

答えて

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 

あなたは12時間形式の出力を得るためにCalendarおよび/またはDateFormatterの設定を使用する必要があります。入力サイトでは、xxAMInt("xx")!xxPM12 + Int("xx")!にマッピングできます。

関連する問題