Android: material date picker opens on the wrong day
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 76/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript, react-native
- Lĩnh vực
- mobile
Hướng nghiên cứu
Bắt đầu với android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt, đặc biệt là setInitialDate() và cách RNDate cung cấp ngày được chọn. Kiểm tra các bài kiểm thử bộ chọn ngày Android để xem chúng có bao phủ timeZoneName và các ngày gần ranh giới ngày UTC hay không. Công việc hoàn tất khi bộ chọn mở đúng ngày theo lịch địa phương dự định ở mọi múi giờ và có bài kiểm thử bao phủ lỗi hồi quy.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- JavaScript
- Star
- 2.9k
- Fork
- 459
- Merge trung bình
- 4 ngày 16 giờ
- Pull request đã merge (30 ngày)
- 5
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của react-native-datetimepicker/datetimepicker
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 58/100
react-native-datetimepicker/datetimepicker#1070 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
-
DateTimePickerAndroid.open() throws "Cannot read property" error on RN 0.78.3 new architectureĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
react-native-datetimepicker/datetimepicker#1047 · 6 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
react-native-datetimepicker/datetimepicker#1046 · 1 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
Tất cả issue của react-native-datetimepicker/datetimepicker
Issue tương tự
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 87/100
OWASP/CheatSheetSeries#2905 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
ComposioHQ/composio#5249 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
zilliztech/memsearch#838 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[DOCS] Nine one-colon directives hide code examples and notes in the reference docs (e.g. CustomJS)Đang mởTRIAGE
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
cdx-audit output written to a pipe is cut off at 64 KiBCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởbug mode:cli
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày