我try 使用以下内容将Date对象的秒数设置为0:

if let date = value{
   var calendar = Calendar.current
    if let mdate = calendar.date(bySetting: .second, value: 0, of: date) {
        ...
}
}

然而,这不仅仅是将秒设置为0,它还会在分钟上加1,我不明白为什么.

正如您在此屏幕截图中看到的-我有一个时间值为"15:00:10"的Date对象,但当我将秒设置为0时,它变成了"15:01:00".

这似乎并不直观.我每次需要减go 一分钟吗?我能确定这种行为是一致的吗?

enter image description here

推荐答案

这很奇怪,我不太确定为什么它会按分钟递增.

您可以通过从日期获取年/月/日/小时/分钟组件值,然后使用这些组件来创建另一个日期,从而获得您想要的结果:

let value: Date? = Date()
if let date = value{
    var calendar = Calendar.current
    print(date.description(with: .current))
    
    let components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date)
    
    if let mdate = calendar.date(from: components) {
        print(mdate.description(with: .current))
    }
}

Swift相关问答推荐

TabView中的视频播放器意外播放

SWIFT闭包使用的是陈旧的值,即使它是S@转义

如何把多个可观测性变成一个完备性?

是否可以将具有关联值的枚举强制转换为其类型与关联值匹配的变量?

如何在SWIFT Memory中处理对VAR数组的更新(对COW感到困惑)

为什么Swift可以在没有足够信息的情况下推断类型?

有没有一种方法可以访问封闭实例ObservableObject以从属性包装器中的任何位置调用objectWillChange.send()

如何在 swift 5.0 中获取当前行

如何在 macOS/AppKit 的窗口选项卡上接受拖动项目的放置?

是否有一个带有空初始值设定项的 Swift 类/ struct 的标准协议

如何在 AppDelegate for Cocoa macOS 中创建 mainMenu 和菜单项?

RxSwift 事件触发了两次

如何让不同的组件拥有不同的动画?

无法使用锚激活约束

在 Swift 框架中加载资源(例如故事板)

Swift if 语句 - 多个条件用逗号分隔?

在 Swift 中覆盖 UIScrollView 的委托属性(就像 UICollectionView 一样)

Void 函数中意外的非 Void 返回值 (Swift 2.0)

Swift 中的单元测试致命错误

iPhone 纵向和 iPad 横向的通用应用程序