From 4f6a36ebb920fed1c31ead37346dff1d411cee1c Mon Sep 17 00:00:00 2001 From: Tony Parker Date: Mon, 15 Jul 2024 09:43:54 -0700 Subject: [PATCH 1/2] Use correct calculation for Date's current time --- Sources/FoundationEssentials/Date.swift | 2 +- Tests/FoundationEssentialsTests/DateTests.swift | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Sources/FoundationEssentials/Date.swift b/Sources/FoundationEssentials/Date.swift index 107fe3711..8811aa433 100644 --- a/Sources/FoundationEssentials/Date.swift +++ b/Sources/FoundationEssentials/Date.swift @@ -229,7 +229,7 @@ extension Date { li.LowPart = ft.dwLowDateTime li.HighPart = ft.dwHighDateTime // FILETIME represents 100-ns intervals since January 1, 1601 (UTC) - return TimeInterval((li.QuadPart - 1164447360_000_000) / 1_000_000_000) + return TimeInterval(Double(li.QuadPart) / 10_000_000.0 - Self.timeIntervalBetween1601AndReferenceDate) #else var ts: timespec = timespec() clock_gettime(CLOCK_REALTIME, &ts) diff --git a/Tests/FoundationEssentialsTests/DateTests.swift b/Tests/FoundationEssentialsTests/DateTests.swift index 12dd8c493..81f8ccb27 100644 --- a/Tests/FoundationEssentialsTests/DateTests.swift +++ b/Tests/FoundationEssentialsTests/DateTests.swift @@ -127,6 +127,11 @@ final class DateTests : XCTestCase { XCTAssertEqual("", date.description) #endif } + + func testNowIsAfterReasonableDate() { + let date = Date.now + XCTAssert(date.timeIntervalSinceReferenceDate > 742700000.0) + } } // MARK: - Bridging From 92766ba426e1c0e7b5ff92af27937a1030a0ec84 Mon Sep 17 00:00:00 2001 From: Tony Parker Date: Mon, 15 Jul 2024 09:48:27 -0700 Subject: [PATCH 2/2] Update test to also check upper bound --- Tests/FoundationEssentialsTests/DateTests.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tests/FoundationEssentialsTests/DateTests.swift b/Tests/FoundationEssentialsTests/DateTests.swift index 81f8ccb27..e5bd5ba3f 100644 --- a/Tests/FoundationEssentialsTests/DateTests.swift +++ b/Tests/FoundationEssentialsTests/DateTests.swift @@ -130,7 +130,8 @@ final class DateTests : XCTestCase { func testNowIsAfterReasonableDate() { let date = Date.now - XCTAssert(date.timeIntervalSinceReferenceDate > 742700000.0) + XCTAssert(date.timeIntervalSinceReferenceDate > 742100000.0) // "2024-07-08T02:53:20Z" + XCTAssert(date.timeIntervalSinceReferenceDate < 3896300000.0) // "2124-06-21T01:33:20Z" } }