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 {
|
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()
|
var dateComponents = DateComponents()
|
||||||
dateComponents.calendar = Calendar.current
|
dateComponents.calendar = Calendar.current
|
||||||
dateComponents.timeZone = TimeZone(secondsFromGMT: 0)
|
dateComponents.timeZone = TimeZone(secondsFromGMT: 0)
|
||||||
@ -22,6 +22,7 @@ class RSDateParserTests: XCTestCase {
|
|||||||
dateComponents.hour = hour
|
dateComponents.hour = hour
|
||||||
dateComponents.minute = minute
|
dateComponents.minute = minute
|
||||||
dateComponents.second = second
|
dateComponents.second = second
|
||||||
|
dateComponents.nanosecond = milliseconds * 1000000
|
||||||
|
|
||||||
return dateComponents.date!
|
return dateComponents.date!
|
||||||
}
|
}
|
||||||
@ -100,9 +101,9 @@ class RSDateParserTests: XCTestCase {
|
|||||||
XCTAssertEqual(d, expectedDateResult)
|
XCTAssertEqual(d, expectedDateResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
// func testHighMillisecondDate() {
|
func testHighMillisecondDate() {
|
||||||
// let expectedDateResult = Self.dateWithValues(2021, 03, 29, 10, 46, 56)
|
let expectedDateResult = Self.dateWithValues(2021, 03, 29, 10, 46, 56, 516)
|
||||||
// let d = RSDateWithString("2021-03-29T10:46:56.516941+00:00")
|
let d = RSDateWithString("2021-03-29T10:46:56.516941+00:00")
|
||||||
// XCTAssertEqual(d, expectedDateResult)
|
XCTAssertEqual(d!.timeIntervalSince1970, expectedDateResult.timeIntervalSince1970, accuracy: 0.000001)
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
@ -389,6 +389,9 @@ static NSDate *RSParseW3CWithBytes(const char *bytes, NSUInteger numberOfBytes)
|
|||||||
if (hasMilliseconds) {
|
if (hasMilliseconds) {
|
||||||
milliseconds = nextNumericValue(bytes, numberOfBytes, currentIndex, 3, &finalIndex);
|
milliseconds = nextNumericValue(bytes, numberOfBytes, currentIndex, 3, &finalIndex);
|
||||||
currentIndex = finalIndex + 1;
|
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);
|
timeZoneOffset = parsedTimeZoneOffset(bytes, numberOfBytes, currentIndex);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user