- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在调试一个问题,如果设置了非默认最小日期,则 DatePicker
中的 CalendarView
会移动到 1964 年 10 月。这至少在 API17 Nexus7 模拟器上重现,但在平台样式包括日期选择器中的微调器和日历 View 的其他设备上也有关于此问题的报告。
这是一个演示问题的代码 fragment :
class DatePickerDialog1964 extends DatePickerDialog {
DatePickerDialog1964(Context c) {
super(c, null, 2013, 4, 21);
@SuppressWarnings("deprecation")
Date min = new Date(2013-1900, 4, 21);
DatePicker p = getDatePicker();
p.setMinDate(min.getTime());
}
}
...
new DatePickerDialog1964(context).show();
屏幕截图:
当然,期望是微调器和日历 View 将显示相同的日期。
我会继续调试,但如果任何 SO 用户有经验或其他见解,请分享。
相关:
最佳答案
不是 1964 而是 2100 格式错误。 CalendarView
有错误。 formatDateRange()
在 2038 年之后无法使用。
class DatePickerDialog1964 extends DatePickerDialog {
DatePickerDialog1964(Context c) {
super(c, null, 2013, 4, 21);
@SuppressWarnings("deprecation")
Date min = new Date(2013-1900, 4, 21);
DatePicker p = getDatePicker();
CalendarView cv = p.getCalendarView(); // should check for null
long cur = cv.getDate();
int d = cv.getFirstDayOfWeek();
p.setMinDate(min.getTime());
cv.setDate(cur + 1000L*60*60*24*40);
cv.setFirstDayOfWeek((d + 1) % 7);
cv.setDate(cur);
cv.setFirstDayOfWeek(d);
}
}
// Calendar view is a cascade of bugs.
// Work around that by explicitly disabling it.
datePicker.setCalendarViewShown(false);
CalendarView
使用 android.text.format.DateUtils.formatDateRange()
用于在标题中生成月/年名称。日历 View 仅在月份编号更改时更新标题。例如,如果月份编号相同但年份发生变化,则表头不会更新。
在布局阶段的某个地方,底层的 ListView
调用 OnScrollListener
在日历 View 上,就像列表滚动到末尾一样。如果月份数改变,则使用上面的测试代码更新表头,将毫秒值传递给 formatDateRange()
是 4131043200000
这是在 2100 年末的某个地方,而 2100 是 DatePicker
的默认最大值.
formatDateRange()
反过来使用 android.text.format.Time
作为其内部日历表示,特别是使用其 set()
设置毫秒方法。我没有检查底层的 native 代码,但我有根据的猜测是传递的毫秒值被截断为 32 位 time_t
具有固有 Year 2038 problem 的秒值, 包装到 62 年多一点的值(value)。 Time
本身正在使用 struct tm
表示年份为 int
自 1900 年以来,因此产生了 Time
在 1960 年代,然后在标题中格式化。
这可以用普通的 DatePicker
复制。与 CalendarView
没有设置最小日期。只需使用微调器将年份移动到 2038 年或更晚,更改月份(以触发标题更新),您就会看到标题换行中的年份为 1902。
现在,问题仍然是为什么设置最小日期会使日历 View 滚动到最大日期。答案似乎是日历 View 的一周 ListView
适配器。它索引从最小日期开始的周数,但是当最小日期更改时,适配器的 notifyDataSetChanged()
不叫。所以上面的解决方法 #1 有效,因为:
关于android - 在 DatePicker 上设置 MinDate 会将 CalendarView 移动到 1964,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16664562/
我正在尝试使用 720Kb 日期选择器。 https://github.com/720kb/angular-datepicker 使用简单示例时: 我收到打击错误: angular.js:1
我开始使用react-datepicker组件。 https://github.com/Hacker0x01/react-datepicker 我运行了该示例,现在我想对其进行调整,使其没有初始值。示
我正在使用 Angular-ui 日期选择器,除了日期选择器的初始状态外,一切实际上都工作正常。我选择日期后,看起来不错。见下文: 初始状态 在选择器中选择日期后 所以,显然我在第一种情况下得到了日期
我需要为回历日期设置日期选择器。我可以使用 jquery datepicker 或 bootstrap datepicker。但是我写了这段代码
在选择范围时,我遇到了 jquery UI datepicker 的一个奇怪问题。在提出问题之前,我正在研究许多其他人编写的代码。他们以优化的顺序包含了 jquery 工具和 UI,因此所有功能都可以
我有两个剑道 DatePickers 来选择工作的开始和结束日期。作业由多个任务组成,其中包含自己的完成日期(任务在网格中列出,每条记录使用 kendo DatePicker 选择完成日期) 当用户设
我想将功能添加到 Material 日期选择器,以便能够选择周.. 因此,当我从一行中选择一个日期时,我希望它输出从一周开始到一周结束的日期范围。 我之前在常规 jquery 日历上这样做过--检查照
在 SwiftUI 中使用新的 (iOS 14) DatePicker,它按预期工作并且在模拟器和设备上看起来很好,但是一旦日历弹出,我会在输出窗口中收到几行警告。这有点烦人! 虽然日志贴在下面,但看
我将如何创建 doctrine_orm_datetime_range使用 jQuery UI 日期选择器的 Sonata Admin Bundle 中的过滤器? 我尝试了以下方法,但不起作用: pro
有人知道如何设置 gem bootstrap-datepicker-rails 吗?我按照 http://rubydoc.info/gems/bootstrap-datepicker-rails/0.
在 kartik DatePicker Yii2 中有没有办法 - 我可以禁用大于当前日期的日期? 例如:如果今天是 2016 年 3 月 14 日,则应禁用 2016 年 3 月 15 日的日历日期
在 UIDatePicker 我们可以做这样的事情 datePicker.timeZone = TimeZone(secondsFromGMT: 5*60*60) 为了指定日期选择器的时区。 但是如何
我在 FullCalendar ( http://www.eyecon.ro/datepicker/ ) 页面正下方添加了一个 datePicker ( http://fullcalendar.io
我在一个 Polymer 项目中有两个 Vaadin-datepickers。一个有开始日期,一个有结束日期。我想确保结束日期总是在开始日期之后。我阅读了 API 文档,他们说您可以使用 min ma
我正在Angular 6中搜索Datepicker,它可以显示基于回历日历的阿拉伯日期。 似乎找不到一个。是否有可用的东西,或者我们需要从头开始构建它。 最佳答案 Ng bootstrap或angul
JavaFX8 中是否有一种方法可以从 Java 代码中选择 DatePicker 中的日期(作为文本)?我想以这样一种方式激活带有 DatePicker 的控件,用户可以在不使用鼠标的情况下编辑日期
我在一个 Polymer 项目中有两个 Vaadin-datepickers。一个有开始日期,一个有结束日期。我想确保结束日期总是在开始日期之后。我阅读了 API 文档,他们说您可以使用 min ma
我正在尝试验证datepicker,因为startDate应始终小于EndDate。如果我手动更改日期,则 StartDate 有效,但 EndDate 无效。 我的JavaScript代码: $(d
我是 jquery 和 javascript 的菜鸟。因此,虽然我看过很多解决我的问题的 SO 帖子,但我无法将各种解决方案“组装”成适合我的东西。 我的上下文:查询结果显示在表单中。在每一行中,其中
我正在开发 Windows Phone 8.1 应用程序。我正在尝试使用 DatePickerFlyout 但没有取得适当的成功。我正在选择日期并尝试用选定的日期设置按钮内容,但它没有设置。当我调试以
我是一名优秀的程序员,十分优秀!