2017-06-08 14 views
0

私は、指定されたDateオブジェクトの平日を取得しようとしています。しかし、常に+1値を返します。 例:私のように日付を与えた場合:2017年6月1日夜06時30分00秒0000カレンダー返されません.weekday swift 3.1

それは平日6返します - それは、平日5ハチすべき金曜日 >を - >木曜日

マイコードを:

let calendar = Calendar.current 
     let day: Int = calendar.component(.weekday, from: self.month!) 
     print ("---------") 
     print(self.month!) 
     print (day) 
     switch day { 
     case 1:print("Sunday") 
     case 2:print("Monday") 
     case 3:print("Tuesday") 
     case 4:print("Wednesday") 
     case 5:print("Thursday") 
     case 6:print("Friday") 
     case 7:print("Saturday") 
     default: 
      break 
     } 

コンソールに出力:(私は間違っているARそれらの2日の両方を与えている)

--------- 
2016-01-01 18:30:00 +0000 
7 
Saturday 
--------- 
2017-06-01 18:30:00 +0000 
6 
Friday 

私はミスをしなかった... よりあなた。私の視点から

+0

カレンダー用に設定したロケールは何ですか? – dirtydanee

+0

カレンダーオブジェクトのロケールを設定していません – gamal

+0

**問題ありません** '2017-06-01 18:30:00 + 0000'はGMT/UTCの時刻です。 '2017-06-02 00:00:00」と、それは金曜日でした。 –

答えて

0

はそれを使用することがより明確であるDateへの拡張を作成します。

extension Date { 
    func weekday() -> Int? { 
     return Calendar.current.dateComponents([.weekday], from: self).weekday 
    } 
} 

print(Date().weekday()!) 

例:

let dateFormatter = DateFormatter() 
dateFormatter.calendar = Calendar(identifier: .gregorian) 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssZ" 
let date = dateFormatter.date(from: "2017-06-01 18:30:00 +0000") 

print(date?.weekday()!) //5 In Ukraine 
+0

私のiPhoneでそれはstilと言う6月曜日から1を引く必要があります – gamal

+0

あなたが使用しているデバイスのタイムゾーンとゾーンは何ですか? –

+0

コロンボUTC + 05:30 – gamal

関連する問題