我正在尝试以特定格式(YYYYMMD)打印当前日期以获取AWS安全凭据,我注意到当我执行Date()
时,该日是第4个正确值:< / p>
let date = Date()
print("\(date)") //2016-10-04 00:56:28 +0000
现在,我想以我想要的格式打印日期,但我一直将日期值作为第3个:
let calendar = Calendar.current
let date = Date()
let components = calendar.dateComponents([.day], from: date)
print("\(components.day)") //Optional(3)
S3期待日期为第4天。我怎样才能解决这个问题?
答案 0 :(得分:2)
这是因为时区差异。 date
将返回UTC时间和日期,但calendar
将根据您设备的时区返回日期和时间。如果您需要UTC中的日期编号,请在创建后将日历对象的时区设置为UTC:
let calendar = Calendar.current
calendar.timeZone = TimeZone(abbreviation: "UTC")!
现在它将始终匹配Date()
答案 1 :(得分:1)
使用
打印日期时 print("\(date)")
您获得UTC的日期和时间,这可能不是您想要的。
如果要在当地时区显示日期,请创建日期格式化程序并使用:
let dateFormatter = NSdateFormatter()
let dateFormatter.dateStyle = .medium
let dateFormatter.timeStyle = .medium
let dateString = dateFormatter.StringFromDate(date)
print ("date = \(dateString)")
如果你经常这么做,你可能想在NSDate displayString上创建一个扩展,这样你就可以用它来显示你的日期,而不必编写额外的代码。