ios Swift 没有时间的日期

Ahs*_*sim 10 nsdate nsdatecomponents ios swift

我试图只获取意味着小时、分钟、秒为零的日期。这就是我正在尝试的

extension Date {

    var onlyDate: Date? {
        get {
            let calender = Calendar.current
            var dateComponents = calender.dateComponents([.year, .month, .day], from: self)
            dateComponents.timeZone = NSTimeZone.system
            return calender.date(from: dateComponents)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试时

date = Date().onlyDate 
Run Code Online (Sandbox Code Playgroud)

我的输出

它返回前一个日期。你可以查看屏幕截图,它给我的是 4 月 14 日,而应该是 15 日

Swe*_*per 12

让我猜一下,您现在处于 GMT+6 时区,不是吗?

打印 s时Date,它们始终以 UTC 格式显示。

2019-04-14 18:00 UTC与您当地时区的 2019-04-15 00:00 相同

你的代码没有错。效果很好。

要在您的时区中查看它,请使用 aDateFormatter并设置timeZone属性:

let formatter = DateFormatter()
formatter.timeStyle = .none
formatter.dateStyle = .full
formatter.timeZone = TimeZone.current
print(formatter.string(from: Date().onlyDate))
Run Code Online (Sandbox Code Playgroud)