【发布时间】:2017-11-07 23:29:20
【问题描述】:
首先我的日期是字符串格式:“06-04-2017 06:28:17 PM”
然后我使用以下方法转换为 Date():
let formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy hh:mm:ss a"
formatter.timeZone = TimeZone(abbreviation: "GMT")
let startdate = formatter.date(from: sdate!)
print(startdate)
这是上面的输出日期:
startdate = 2017-04-06 18:28:17 +0000
但是当我尝试使用以下代码将分钟设置为 0 时。 我改变了我的一天。
let calender = Calendar.current
calendar.timeZone = TimeZone(abbreviation: "UTC")!
let date = calender.date(bySettingHour: Int(hour)!, minute: 00, second: 00, of: startdate!)
print(date)
输出:2017-04-07 12:15:00 +0000
在我设置了那个时区之后,我的时区是 +5:45 。我得到了同样的错误。
任何帮助。 高度赞赏。
使用以下代码,我得到相同的日期:
let formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy hh:mm:ss a"
formatter.timeZone = TimeZone(abbreviation: "GMT")
let startdate = formatter.date(from: sdate!)
print(startdate)
**但是我不能在这里将分钟设置为 0。 **
【问题讨论】:
-
先不要打印Date也不要乱用timeZone
-
如果您需要检查您的日期描述,请使用
yourDate.description(withLocale: .current) -
@LeoDabus 没有帮助
-
您到底需要什么,为什么?您当前位置的午夜还是距格林威治标准时间零秒?
-
顺便说一句,如果您需要对日期时间不敏感,您应该使用中午而不是午夜。而且应该是当前时区的中午