2016-03-23 9 views
0

NSDateを取り込み、dateStringに変換しています。しかし、...日付の文字列が機能し、文字列の日付が機能しない

私はそれをdateStringとし、それをNSDateに戻そうとすると、私の日付が正しくありません。 dateString ...

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MMM d, yyyy H:mm a" 
let dateString = dateFormatter.stringFromDate(timeDate as! NSDate) 
print("Date: \(dateString)") 

から

NSDateコンソール:plainDate

Date: Mar 22, 2016 22:30 PM 
Date: Mar 23, 2016 1:00 AM 
Date: Mar 23, 2016 9:00 AM 

dateString ...

let reverseDateFormatter = NSDateFormatter() 
reverseDateFormatter.dateFormat = "MMM d, yyyy H:mm a" 
let plainDate = reverseDateFormatter.dateFromString(dateString) 
print("Date Reverse: \(plainDate)") 

コンソール:あなたは、あなたのタイムゾーン情報を失うこと、文字列に日付を変換し、

Date Reverse: Optional(2016-03-22 17:30:00 +0000) 
Date Reverse: Optional(2016-03-23 05:00:00 +0000) 
Date Reverse: Optional(2016-03-23 05:00:00 +0000) 
+1

22:30午後はあなたが決定する必要があり –

+0

意味がない場合24 "H:mm"または12時間 "h:mm a"の形式 –

+0

@LeoDabus 22:30 pmは "pm"部分のために理にかなっていませんか? – victorpulak

答えて

2

その背中をかき集めることができません。

Date自体をNSDateとして保存してから、文字列から日付を再作成する代わりにその日付を使用することはできません。

あなたは、文字列から戻って完全な日付に変換する必要がある場合は、あなたが同様にタイムゾーンを保存するためにあなたのフォーマットを調整する必要があります

+0

プロセスは次のとおりです.24時間形式のCloudKitから日付+時刻が取得されます。その後、その日付をテキストとして表示するための文字列に変換します(ユーザーの携帯電話のタイムゾーンを使用して、CloudKitの最後に日付+時刻をハードコードしませんでした)。次に、文字列の日付をWatchに渡す必要があります。そのため、文字列として表示し、タイムラインのエントリを注文することができます。 – victorpulak

+0

そこで私が問題にぶつかり始めたのは、ウォッチ側でした。だから私は問題をトレースしていたので、私はiPhoneでNSDateに文字列を変換するときに問題が発生するかどうかを試してみることにしました。 – victorpulak

+0

私は、助けてくれることを望み、私が何を変えるべきか、何か他に何かを提案しているなら、あなたの考えを分かりやすくしてくれます。ありがとうございました! – victorpulak

1

stringFromDateは非オプションの文字列を返しますが、dateFromStringは、オプションの日付を返します。 。条件付きで、それをプリントアウトする前に結果をアンラップ:

せた結果は= reverseDateFormatter.dateFromString(日付ストリング){ プリント(結果) }

+0

素晴らしい情報です!あなたが私の主な質問について考えているかどうかを教えてください。 – victorpulak

+0

すでにBolnadはこれに答えています - NSDateをStringではなくWatchに渡してください。 – Darko

+0

Ps:またはタイムゾーン情報も渡します。 – Darko

関連する問題