iOS swift : Setting minute to 0 for my date object

标签 ios swift date timezone

首先我的日期是字符串格式:“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/

相关文章:

jquery - 不允许加载本地资源ios9 cordova应用程序

ios - Alertview 操作在快速导航到下一个 View Controller 后

ios - 从 web 服务解析 JSON 数据时,没有返回数据

swift - 如何在 OneSignal Swift 中显示特定的 ViewController

java - 旧日期格式与 Java 8 ZonedDateTime API 不兼容

java - 未知模式字母 : T - Parse string date with pattern T to LocalDateTime

android - 解析日期异常 - 无法解析的日期

iOS 键盘 - 使用自动布局输入附件 View xib 未接收触摸事件

ios - 两个物体之间的碰撞需要帮助

iphone - Modal ViewController 在没有动画的情况下弹出,错误?