簡體   English   中英

Date()和Calendar.dateComponents的日期不匹配

[英]day for Date() and Calendar.dateComponents don't match up

我試圖獲取當前日期以特定格式(YYYYMMD)進行AWS安全憑證打印,並且我注意到當我執行Date() ,日期是第4天,這是正確的值:

    let date = Date()
    print("\(date)")  //2016-10-04 00:56:28 +0000

現在,我想以所需的格式打印日期,但我不斷將日值作為第三個:

    let calendar = Calendar.current
    let date = Date()
    let components = calendar.dateComponents([.day], from: date)
    print("\(components.day)")  //Optional(3)

S3預計該日期為4日。 我怎樣才能解決這個問題?

這是因為時區不同。 date將返回UTC時間和日期,而calendar將根據設備的時區返回日期和時間。 如果您需要UTC中的日期,只需在創建日歷對象后將其時區設置為UTC:

let calendar = Calendar.current
calendar.timeZone = TimeZone(abbreviation: "UTC")!

現在它將始終與Date()返回的值匹配

當您使用

 print("\(date)")

您以UTC格式獲取日期和時間,這可能不是您想要的。

如果要在本地時區顯示日期,請創建一個日期格式器並使用它:

let dateFormatter = NSdateFormatter()
let dateFormatter.dateStyle = .medium
let dateFormatter.timeStyle = .medium

let dateString = dateFormatter.StringFromDate(date)
print ("date = \(dateString)")

如果您經常這樣做,則可能要在NSDate displayString上創建擴展名,以便可以使用它來顯示日期而不必編寫其他代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM