gpt4 book ai didi

swift - NSCalendar 的 calendar.rangeOfUnit 函数中的错误?

转载 作者:行者123 更新时间:2023-11-28 06:51:42 26 4
gpt4 key购买 nike

我做了一个快速 Playground here展示 NSCalendar 的 rangeOfUnit 函数中的一个错误。

在一些初始语句之后,您可以看到我的输出

let secs = calendar.rangeOfUnit(.Second, inUnit: .Month, forDate: firstOfMonth!).length

是 60。我期待看到 2678400(60 秒 * 60 分钟 * 24 小时 * 31 天)。我做错了什么吗?

我还想我会用一个几乎微不足道的东西来强调这个函数

let months = calendar.rangeOfUnit(.Month, inUnit: .Month, forDate: firstOfMonth!).length

并对结果值 9223372036854775807 感到困惑。有人对此有解释吗?

最佳答案

我认为您正在寻找 ordinalityOfUnit() 方法

首先我们需要月末日期。

var firstOfMonth:NSDate? = nil
var seconds: NSTimeInterval = 0
calendar().rangeOfUnit(.Month, startDate: &firstOfMonth, interval: &seconds, forDate: NSDate())
let endOfMonth = firstOfMonth?.dateByAddingTimeInterval(seconds-1)

我们做不到

let secs = calendar().ordinalityOfUnit(.Second, inUnit: .Month, forDate: endOfMonth!)

secs 现在拥有 2678400

let min = calendar().ordinalityOfUnit(.Minute, inUnit: .Month, forDate: endOfMonth!)
let hour= calendar().ordinalityOfUnit(.Hour, inUnit: .Month, forDate: endOfMonth!)

922337203685477580710 == 111111111111111111111111111111111111111111111111111111111111111111111111112
这个数字是64bit中最高的Int值。
还有 NSNotFound = NSIntegerMax

func rangeOfUnit(_: inUnit:forDate:) -> NSRange 文档状态

[…] Returns {NSNotFound, NSNotFound} if larger is not logically bigger than smaller in the calendar, or the given combination of units does not make sense […]

关于swift - NSCalendar 的 calendar.rangeOfUnit 函数中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34701492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com