mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2025-02-09 08:39:00 +01:00
Bring extra-milliseconds fix to main
1. bring code from https://github.com/Ranchero-Software/RSParser/pull/78/files to main.
This commit is contained in:
parent
65a18129ca
commit
090c8e0247
@ -11,7 +11,7 @@ import Parser
|
||||
|
||||
class RSDateParserTests: XCTestCase {
|
||||
|
||||
static func dateWithValues(_ year: Int, _ month: Int, _ day: Int, _ hour: Int, _ minute: Int, _ second: Int) -> Date {
|
||||
static func dateWithValues(_ year: Int, _ month: Int, _ day: Int, _ hour: Int, _ minute: Int, _ second: Int, _ milliseconds: Int = 0) -> Date {
|
||||
var dateComponents = DateComponents()
|
||||
dateComponents.calendar = Calendar.current
|
||||
dateComponents.timeZone = TimeZone(secondsFromGMT: 0)
|
||||
@ -22,6 +22,7 @@ class RSDateParserTests: XCTestCase {
|
||||
dateComponents.hour = hour
|
||||
dateComponents.minute = minute
|
||||
dateComponents.second = second
|
||||
dateComponents.nanosecond = milliseconds * 1000000
|
||||
|
||||
return dateComponents.date!
|
||||
}
|
||||
@ -100,9 +101,9 @@ class RSDateParserTests: XCTestCase {
|
||||
XCTAssertEqual(d, expectedDateResult)
|
||||
}
|
||||
|
||||
// func testHighMillisecondDate() {
|
||||
// let expectedDateResult = Self.dateWithValues(2021, 03, 29, 10, 46, 56)
|
||||
// let d = RSDateWithString("2021-03-29T10:46:56.516941+00:00")
|
||||
// XCTAssertEqual(d, expectedDateResult)
|
||||
// }
|
||||
func testHighMillisecondDate() {
|
||||
let expectedDateResult = Self.dateWithValues(2021, 03, 29, 10, 46, 56, 516)
|
||||
let d = RSDateWithString("2021-03-29T10:46:56.516941+00:00")
|
||||
XCTAssertEqual(d!.timeIntervalSince1970, expectedDateResult.timeIntervalSince1970, accuracy: 0.000001)
|
||||
}
|
||||
}
|
||||
|
@ -389,6 +389,9 @@ static NSDate *RSParseW3CWithBytes(const char *bytes, NSUInteger numberOfBytes)
|
||||
if (hasMilliseconds) {
|
||||
milliseconds = nextNumericValue(bytes, numberOfBytes, currentIndex, 3, &finalIndex);
|
||||
currentIndex = finalIndex + 1;
|
||||
|
||||
// Igore more than 3 digits for fraction of a second
|
||||
while (currentIndex < numberOfBytes && isdigit(bytes[currentIndex])) currentIndex++;
|
||||
}
|
||||
|
||||
timeZoneOffset = parsedTimeZoneOffset(bytes, numberOfBytes, currentIndex);
|
||||
|
Loading…
x
Reference in New Issue
Block a user