Improve yyyy-MM-dd date formatter to support dates happening at DST #771
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes wordpress-mobile/WordPress-iOS#22859
We need to pass
yyyy-MM-dd
date toAPI
when fetchingstats/visits
and other similar endpoints. However, in some cases, date conversions to date string fails.The bug is related to TimeZone and DTS. For example, Paraguay has a DTS change at midnight 2023-10-01 which is ambiguous to
DateFormatter
andnil
is returned.Date formatter we use:
Result for "America/Asuncion" time zone:
Result for "Europe/Vilnius" time zone:
In documentation Apple suggests to set the timezone to UTC:
However, this is not a straightforward solution, since in Stats we're working with dates that are in a different time zone.
Solution
Created
RFC339NoTimeDateFormatter
that sets:but also recalculates the data to the current time zone after conversion. Therefore, the dates remain unchanged but conversions also succeed. I added
RFC339NoTimeDateFormatterTests
as an example.Testing Details
CHANGELOG.md
if necessary.