Skip to content

Commit df519f1

Browse files
authored
Merge pull request #1822 from spevans/pr_sr_9322
2 parents abc9ac7 + 8747de5 commit df519f1

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

Foundation/DateFormatter.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ open class DateFormatter : Formatter {
6262
}
6363
return res._swiftObject
6464
}
65+
66+
// range.length is updated with the last position of the input string that was parsed
67+
guard range.length == string.length else {
68+
// The whole string was not parsed
69+
return nil
70+
}
6571
return date
6672
}
6773

TestFoundation/TestDateFormatter.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class TestDateFormatter: XCTestCase {
2626
("test_setTimeZoneToNil", test_setTimeZoneToNil),
2727
("test_setTimeZone", test_setTimeZone),
2828
("test_expectedTimeZone", test_expectedTimeZone),
29+
("test_dateFrom", test_dateFrom),
2930
]
3031
}
3132

@@ -409,4 +410,19 @@ class TestDateFormatter: XCTestCase {
409410
f.timeZone = losAngeles
410411
XCTAssertEqual(f.string(from: now), losAngeles.abbreviation())
411412
}
413+
414+
func test_dateFrom() throws {
415+
let formatter = DateFormatter()
416+
formatter.timeZone = TimeZone(identifier: "UTC")
417+
formatter.dateFormat = "yyyy-MM-dd"
418+
419+
XCTAssertNil(formatter.date(from: "2018-03-09T10:25:16+01:00"))
420+
let d1 = try formatter.date(from: "2018-03-09").unwrapped()
421+
XCTAssertEqual(d1.description, "2018-03-09 00:00:00 +0000")
422+
423+
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
424+
XCTAssertNil(formatter.date(from: "2018-03-09"))
425+
let d2 = try formatter.date(from: "2018-03-09T10:25:16+01:00").unwrapped()
426+
XCTAssertEqual(d2.description, "2018-03-09 09:25:16 +0000")
427+
}
412428
}

0 commit comments

Comments
 (0)