NSDateComponentsFormatter'ın oldukça garip bir davranışını buldum - bazı zaman aralıklarında sonuç için yalnızca ek saat ekler.NSDateComponentsFormatter ek saat ekler
1 yıl boyunca zaman aralıklarında bir "atlama saati" ekleyebiliriz, ancak bu durumda 5 güne kadar olan zaman aralığını 5 gün ve bir saat olarak görüyorum.
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"
}
sen 1 saat ifade ederek önlemek için bir yol bulmaya yardım edebilir:
bu Test Case düşünün?
Teşekkürler!
Maris
Gün ışığından yararlanma saatine hoş geldiniz ... Mart ve muhtemelen Avrupa'dasınız. Bu, Yaz saati uygulamasından yaklaşık 3-4 gün geçtiğiniz anlamına gelir. – Sulthan
Tamam, bunu anlayabiliyorum ama gün ışığından yararlanma saati geçerli tarihe göre. Bununla birlikte, zaman aralığı güncel tarihe bağlı olmamalıdır. Aksi takdirde, 5 gün boyunca projede çalıştığımı varsayarsam, o zaman bu sayıya baktığımda, 5 gün ve 1 saat boyunca projede çalıştığımı göreceğim. Bir şekilde tutarsız ... – Maris