2017-11-04 13 views
0

私は、自分のDatePickerViewを使用してユーザーからの時間入力を取得しています。私は現地時間に変換する必要があったし、それは良い作品です。スウィフトで時間オブジェクトをIntとして分割して使用

コードは次のとおりです。

let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "HH:mm" 
    dateFormatter.timeZone = TimeZone.autoupdatingCurrent 
    selectedMorningTime = dateFormatter.string(from: morningHour.date) 
    selectedEveningTime = dateFormatter.string(from: eveningHour.date) 

と出力例は、「12:30」である私はそれをそれが「9時30分」に例を変換し、日付を変換しようとした場合(これは、GMT 3フォーマットです。

私の問題は、私はローカル通知の中で、この時間を使用する必要がありますが、それが唯一のdateComponentsとdateComponentsは唯一の「.hour」を受け入れ、「.minuteは」属性を受け入れていることである。

dateComponentsForMorning.hour = 12 
dateComponentsForMorning.minute = 30 

どのように私は私の時間を分割することができます時間と分のように、私はこの例のようにそれを使用することができます:

dateComponentsForMorning.hour = convertedMorningHour 
dateComponentsForMorning.minute = convertedMorningMinute 

答えて

0

あなたの日付ピッカーからあなたの時間のコンポーネントを取得し、あなたの通知をスケジュールするためにそれを使用するカレンダー法dateComponentsを使用することができます。

let morningHour = UIDatePicker() 
let selectedMorningTime = Calendar.current.dateComponents([.hour,.minute], from: morningHour.date) 
print("Hour:", selectedMorningTime.hour!, ", Minute:", selectedMorningTime.minute!) // "Hour: 2 , Minute: 24\n" 
+0

私はこれをしようとしましたが、問題は、日付ピッカーDateを使用して追加するときは、時間はUTC 0になりますが、ユーザーのUTCが必要であるということです。 dateComponents.timezoneは私にUTC + 0も与えます。私がUTC + 3を行った唯一の方法は、dateFormatterで行うことでした。 – Egrimo

関連する問題