RelativeDateTimeFormatter returns wrong localizedString

Number:rdar://FB9080980 Date Originated:Apr 16, 2021 at 4:45 PM
Status:Open Resolved:
Product:Foundation Product Version:
Classification: Reproducible:Always
RelativeDateTimeFormatter returns wrong localizedString for the date in 2 two days.
see the following code snippet
        var comps1 = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: date)
        comps1.setValue(16, for: .day)
        comps1.setValue(11, for: .hour)
        comps1.setValue(00, for: .minute)
        let today = comps1)!

        var comps2 = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: date)
        comps2.setValue(18, for: .day)
        comps2.setValue(10, for: .hour)
        comps2.setValue(00, for: .minute)
        let date = comps2)!
        let local =  RelativeDateTimeFormatter().localizedString(for: date, relativeTo: today)

Current behavior:
local ==> "in 1 day"
with German locale
local ===> "morgen"

Expected behavior:
local ==> "in 2 days"
with German locale
local ===> "├╝bermorgen"

When you change the hour in comps2 from 10 to 11 you get the correct result (in 2 days)


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!