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.
Summary
I have find out issue while using datetime picker for RN App with timezone handling.
I need to use fixed timezone through whole app. As I found out, from last releases datetime picker should not be device timezone dependent if you've passed
timeZoneOffsetInMinutes
prop intoDateTimePicker
component (as the docs says). iOS works really well, but as it turns out, Android is not so good. (To be correct it doesn't apply timezone in some cases at all 😄). This proposal should fix that issue for Android. (At least it works for us). (I will describe steps to reproduce and technical source of the issue below)Test Plan
Display initially passed date (input)
device: GMT +3
,app: GMT -7
)2021-04-09T17:00:00.000Z
date (for UTC it stands for 17:00, but for app timezone-7
it should be treated like10:00
)timeZoneOffsetInMinutes={-420}
prop (-420 = -7 * 60
)TimePicker
should display10:00
as initial selected dateTimePicker
displays17:00
as initial selected dateAccording to this fact we can suppose what
timeZoneOffsetInMinutes
prop is ignored and UTC hours & minutes are displayed instead.What's required for testing (prerequisites)?
GMT -7
)device: GMT +3
,app: GMT -7
)What are the steps to reproduce (after prerequisites)?
Compatibility
Changes Motivation
RNDate.java
timeZoneOffsetInMinutes
type acts randomly. In one case it'sInteger
type, in other case it'sLong
type. So I appliedLong
Java type compatibility (fallback forgetInt
).datetimepicker.android.js
if
statement fortimeZoneOffsetDateSetter
function which is called for time settings after promise from native Android method is resolved. I really don't get any reasons for ignoring negativetimeZoneOffsetInMinutes
value. (even docs showing example withGMT -7 = - 420 minutes
)Checklist