模仿可以通过变异来完成
NSTimeZone.default
// Cuba will advance its clock by 1 hour, during 2021-03-14 00:00 am. This means during 2021-03-13 23:59 pm, after
// next 1 second, the time will be 2021-03-14 01:00 am.
func testToDayResolutionInCuba() throws {
let cubaTimeZone = TimeZone(identifier: "America/Havana")!
let oldDefault = NSTimeZone.default
NSTimeZone.default = cubaTimeZone
defer {
NSTimeZone.default = oldDefault
}
var dateComponents = DateComponents()
dateComponents.year = 2021
dateComponents.month = 3
dateComponents.day = 14
dateComponents.hour = 0
dateComponents.minute = 0
dateComponents.second = 0
let calendar = Calendar.current
let date = calendar.date(from: dateComponents)!
let timeMillis = date.timeMillis
let timestampWithoutTime = ReminderUtils.toDayResolution(timeMillis)
let dateWithoutTime = Date(timeIntervalSince1970: Double(timestampWithoutTime/1000))
let result = calendar.dateComponents(in: cubaTimeZone, from: dateWithoutTime)
XCTAssertEqual(2021, result.year)
XCTAssertEqual(3, result.month)
XCTAssertEqual(14, result.day)
XCTAssertEqual(1, result.hour)
XCTAssertEqual(0, result.minute)
XCTAssertEqual(0, result.second)
}