2017-07-31 3 views
0

私は文字列形式の日付を持っています。例: - "2017-07-31"または複数の日付(任意)を文字列形式にすることができます。私の要件は、この日付を現在の日付にチェックすることで、0より大きく15より小さい場合は、別の操作を行う必要があります。文字列の日付が正しく来ていないし、2つの日付の違いもSwift 3を使用していますか?

だから最初にその日付文字列を日付形式に変換しています。しかし、それは1日前の日付を与えています。ここに私のコードです:

例。私の日付は「2017-08-30」で、この関数は日付形式で2017-08-29 18:30:00 +0000を返します。それは1日前を意味します。私は日付の操作について少し混乱しています。私は非常に多くのブログを読む。

その後、私はこの日付を現在の日付にチェックする必要があります.< 15の間にあれば他の操作を行います。

比較二つの日付:私の日付は今日の日付と、その後もそれが0日差を与えている、明日の日付と比較され

場合。どうして?

+0

'2017年8月29日午後06時30分00秒+ 0000:あなたはおそらく欲しい

は、日中開始当日の と他の日付の間の差を比較することです*日付はタイムゾーンがなく、常にUTCで表示されます。あなたの現地時間帯の「2017-08-30」と同じ日付*です。 –

+0

しかし、現在の日付と比較すると、それは変です。それは適切な違いを与えていない。ありがとう – kishor0011

+0

[mcve]に入力データ、予想出力、実際の出力を入力してください。 –

答えて

1

もし - 例えば - 現在の日付が2017-です07-31午前11時には との差は2017-08-01(深夜)は0日と13時間で、その結果は となり、結果として「0日差」が得られます。

extension Date { 
    func daysBetween(toDate: Date) -> Int { 
     let cal = Calendar.current 
     let startOfToday = cal.startOfDay(for: self) 
     let startOfOtherDay = cal.startOfDay(for: toDate) 
     return cal.dateComponents([.day], from: startOfToday, to: startOfOtherDay).day! 
    } 
} 
+0

説明してくれてありがとう。それは働いていますが、私は現在の日付であることを "2017-07-31"と比較して、2017-08-01とは24時間の違いがありますが、0日を与えていることを尋ねたいと思います。では、startOfDayを使用していますか? – kishor0011

0

日付に変換する文字列のため、この方法を試してみてください:

func dateFromString(date : String) -> Date { 
    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd" 
    dateFormatter.timeZone = TimeZone.init(abbreviation: "UTC") 
    let currentDate = (dateFormatter.date(from: date))//(from: date)) 
    return currentDate! 
} 
0

秒で2つの日付の間の時間を比較するために、これを試してみてください:

var seconds = Calendar.current.dateComponents([.second], from: date1!, to: date2!).second ?? 0 

    seconds = abs(seconds) 

    let min = seconds/60  // this gives you the number of minutes between two dates 
    let hours = seconds/3600 // this gives you the number of hours between two dates 
    let days = seconds/3600*24 // this gives you the number of days between two dates 
+0

** NO ** ** - 1日は23時間、24時間、または25時間かかる場合があります。夏時間を考える。 –

+0

はい、これは問題になる可能性があります。指摘してくれてありがとう、我々はそれに応じて条件を入れることができるので –

関連する問題