Android: material date picker opens on the wrong day
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 76/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript, react-native
- Domaine
- mobile
Piste de recherche
Commence par android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt, en particulier setInitialDate() et la façon dont RNDate fournit la date sélectionnée. Vérifie si les tests du sélecteur de date Android couvrent timeZoneName et les dates proches des limites des jours UTC. Le travail est terminé lorsque le sélecteur s’ouvre sur le jour calendaire local prévu dans tous les fuseaux horaires et qu’un test couvre la régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Hi!
Thank you for your work on this project!
RNMaterialDatePicker passes the raw value timestamp to setSelection, but MaterialDatePicker interprets the selection as a UTC day. The initial day therefore ignores timeZoneName and the device time zone, and can be off by one.
For example, with timeZoneName: 'Europe/Brussels', a value of 10 November 00:10 opens on 9 November, because that moment is still 9 November in UTC. Zones behind UTC can open a day late in the same way.
This diff solved the problem, but I'm not sure if it's the ideal solution:
diff --git a/node_modules/@react-native-community/datetimepicker/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt b/node_modules/@react-native-community/datetimepicker/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt
index 9dece7a..d1910aa 100644
--- a/node_modules/@react-native-community/datetimepicker/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt
+++ b/node_modules/@react-native-community/datetimepicker/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt
@@ -16,6 +16,7 @@ import com.google.android.material.datepicker.MaterialDatePicker
import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener
import com.google.android.material.R
import java.util.Calendar
+import java.util.TimeZone
class RNMaterialDatePicker(
private val args: Bundle,
@@ -46,7 +47,11 @@ class RNMaterialDatePicker(
private fun setInitialDate() {
val initialDate = RNDate(args)
- builder.setSelection(initialDate.timestamp())
+ // Material reads the selection as a UTC day, so pass the day in the picker's time zone as UTC midnight
+ val selection = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
+ selection.clear()
+ selection.set(initialDate.year(), initialDate.month(), initialDate.day())
+ builder.setSelection(selection.timeInMillis)
}
private fun setTitle() {
This issue body was partially generated by patch-package.
- Langage dominant
- JavaScript
- Étoiles
- 2.9k
- Forks
- 459
- Merge moyen
- 4 j 16 h
- PR mergées (30 j)
- 5
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de react-native-datetimepicker/datetimepicker
-
Difficulté 3/5 1-2 jours Accessibilité débutants 58/100
react-native-datetimepicker/datetimepicker#1070 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 52/100
-
DateTimePickerAndroid.open() throws "Cannot read property" error on RN 0.78.3 new architectureOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
react-native-datetimepicker/datetimepicker#1047 · 6 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 20/100
react-native-datetimepicker/datetimepicker#1046 · 1 commentaire ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
Toutes les issues de react-native-datetimepicker/datetimepicker
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
obsidianmd/obsidian-help#1169 ·
Les mainteneurs répondent en général sous 2 jours
-
[docs] RELEASE.md: wrong branch name, no check that the prepare PR merged with the right subject, manual publish stepPeut-être pris @albertteoh l’a pris aujourd’hui. Ouvertedocumentation
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
jaegertracing/jaeger-ui#4739 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
keepassxreboot/keepassxc-browser#3159 · 1 commentaire ·
-
Add: ESP 2 RSOuverteapproved check:passed feeds:add
Difficulté 1/5 Moins d'une heure Accessibilité débutants 67/100