我發現NSDateComponentsFormatter的行爲非常奇怪 - 對於一些時間間隔它只是增加了一小時的結果。NSDateComponentsFormatter增加了額外的小時
我假設對於1年以上的時間間隔,它可能會增加一個「閏秒」,但在這種情況下,我會將短至5天的時間間隔看作5天和1小時。
考慮這個測試用例:
func testStringFromTimeInterval()
{
let formatter = NSDateComponentsFormatter()
formatter.unitsStyle = .Positional
formatter.allowedUnits = [.Year, .Month, .WeekOfMonth, .Day, .Hour, .Minute]
XCTAssertEqual(formatter.stringFromTimeInterval(3600) ?? "", "1:00") // Pass
XCTAssertEqual(formatter.stringFromTimeInterval(3600*24) ?? "", "1d 0:00") // Pass
XCTAssertEqual(formatter.stringFromTimeInterval(3600*24*5) ?? "", "5d 0:00") // Fail: actual "5d 1:00"
XCTAssertEqual(formatter.stringFromTimeInterval(3600*24*365) ?? "", "1y 0m 0w 0d 0:00") // Pass
XCTAssertEqual(formatter.stringFromTimeInterval((3600*24*365)+60) ?? "", "1y 0m 0w 0d 0:01") // Pass
XCTAssertEqual(formatter.stringFromTimeInterval((3600*24*365)+3600) ?? "", "1y 0m 0w 0d 1:00") // Pass
XCTAssertEqual(formatter.stringFromTimeInterval((3600*24*365)+(3600*24)) ?? "", "1y 0m 0w 1d 0:00") // Pass
XCTAssertEqual(formatter.stringFromTimeInterval((3600*24*365)+(3600*24*5)) ?? "", "1y 0m 0w 5d 0:00") // Fail: actual "1y 0m 0w 5d 1:00"
}
你能幫助找到一種方法避免增加一個1時間?
謝謝!
馬里斯
歡迎來到夏令時......這是3月份,您可能在歐洲。這意味着從夏令時改變開始大約需要3-4天。 – Sulthan
好的,我可以理解,但夏令時相對於當前日期。但是,時間間隔不應與當前日期相關聯。否則,如果我假設我已經完成了5天的項目,那麼在某個時候,當我看這個數字時,我會看到我已經在5天和1小時的時間內完成了項目。不知何故不一致... – Maris