首先我的日期是字符串格式:“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)
这是上面的输出日期:
开始日期 = 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。 **
最佳答案
swift 5
此解决方案只是将分钟和秒归零,而不会弄乱小时。
extension Date {
func startOfHour() -> Date?
{
let calendar = Calendar.current
var components = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: self)
components.minute = 0
components.second = 0
return calendar.date(from: components)
}
}
使用:
Date().startOfHour
打印输出:
日期:2019-09-05 15:09:57 +0000
时间开始日期:可选(2019-09-05 15:00:00 +0000)
关于iOS swift : Setting minute to 0 for my date object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44398618/