问题标签 [java.util.calendar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 日历 set() 在 Android API 23 及更低版本上损坏 - java.util.Calendar
我正在使用 java.util.Calendar 使用其 set() 方法查找给定一周的开始。
这在 Android Nougat+ 上完美运行,但不适用于 Marshmallow 以下的任何 Android 版本。
我已经在物理设备和模拟器上进行了测试。
我已经使用调试器来验证问题出在日历代码上,而不是显示它的问题。
我使用 Kotlin 和 Java 创建了不同的最小示例,但问题仍然存在。
这是 Kotlin 的最小示例,其中 TextView 显示日期,而 Button 用于将该日期增加一周:
当按预期工作时,活动启动时 TextView 设置为显示“2018 年 3 月 5 日”。单击该按钮时,此值将更改为每个连续一周的第一天。
在 Android Marshmallow 及以下版本上:
- TextView 的初始值设置为本周的开始时间( 2018 年 9 月 3 日)。
- 单击按钮时日期不会更改。
- 如果日期设置为,日历可以正确检索当前一周的最后一天
Calendar.SUNDAY
。它不会在任何其他星期工作。
编辑:我试图创建一个 Java MVCE,它允许您通过运行快速检查基本问题是否出现CalendarTester.test()
。
java - Android DatePickerDialog 创建随机错误月份
当我实现 DatePickerDialog 时,它显示正确的日期,但是当我单击确定在 EditText 中设置日期时,我得到一个月份不正确的日期字符串,每次尝试时似乎都是随机的
为了显示 DatePickerDialog,我有这个功能
}
这是日志输出
我包括了一些datepickerdialog和日期字符串的屏幕截图
android - 为什么 calendar.add() 返回 31/9/2018
我想从今天(29/9/2018)开始添加 2 天,我使用:
但是当我记录()它时,日期不是 2018 年 1 月 10 日,而是 2018 年 9 月 31 日
java - java.util.GregorianCalendar 类在不同 android 版本中的奇怪行为
我正在我的 Android 应用程序中创建一个日历。日历的第一天是星期日或星期一。这取决于语言环境。java.util 的奇怪行为。不同 android 版本中的GregorianCalendar类:
设置类构造函数(new GregorianCalendar(1994, 3, 1), Calendar.SUNDAY)。在 android 4.4、5.0 Logcat 结果:
在 android 8.0 Logcat 结果中:
正如您所看到的结果 - 不同的日子(26 和 27),对应于一周中的不同日子。但是,如果您更改日历对象的初始化:
结果在所有版本的 android 上都是正确的:
在 junit 测试中,结果在所有情况下都是正确的(27 和星期天)。从代码中删除日志并检查:
1992 年 4 月的行为也是 1993 年 4 月。为什么?我已经脑残了。
java - Java:GregorianCalendar 奇怪的输出
我是 Java 新手,我正在尝试使用以下代码获取昨天的日期:
我得到的输出是:
325-XI-2018
我究竟做错了什么?
java - 与等效的日历代码相比,生成的 java.time 代码是否具有更多代码语句
最近,我尝试将我们的一个旧代码库从 移植Calendar
到java.time
,因为我们需要相当多的算术功能,而这些功能只能在java.time
.
如果我们Calendar
在当前的代码库中使用,我们需要在代码中间执行大量的来回转换(From Calendar
to Instant
, From Instant
back to Calendar
)。
为了避免这种繁琐的转换,我们决定取消使用Calendar
,并将它们移植到等效的java.time
代码中。
我对我的端口有点怀疑。与日历代码相比,它似乎
- 在 while 循环中创建更多临时对象实例。
- 需要更多的代码语句。
日历代码
java.time 代码
对于上面的代码,我想知道,我们是否正确地进行了移植并进行了优化?我们java.time
的港口有什么可以改进的地方吗?
java - 默认更改日历日期
我在android项目中遇到了一个奇怪的问题。我正在尝试将日期转换为其他日期,为此,我正在计算两个日期之间的天数。所以,这就是我的实施方式。
这是我的 baseEngDate 日历。set 方法有 3 个参数,它们具有以下参数,它们的默认值是:
但是,当我尝试在这个函数中检查它们的值时,
我在日志中得到了这个值,这不是我所期望的:
它应该返回 01 01 1944 但它返回 01 02 1994。为什么?
java - Calendar.getTime 返回不正确的日期
我有一个JCalendar
propertyChangeListener,我在其中使用Calendar newValue = (Calendar) evt.getNewValue()
. 如果旧日期是 31 并且新选择的月份是 30 天的月份之一,当我尝试获取它的值时,newValue.getTime()
它会返回不正确的日期(JCalendar 1.2 中旧月份的 1 日和 Jcalendar 1.4 中旧月份的 30 日)。如果我做 a setLenient=true
,它会抛出Error: java.lang.IllegalArgumentException: MONTH
.
有什么办法可以检查新旧日期和月份并根据要求进行调整?
这是代码:
示例:当前选定日期 -> 2018 年 12 月 31 日日历返回 ->YEAR=2018,MONTH=11,WEEK_OF_YEAR=48,WEEK_OF_MONTH=1,DAY_OF_MONTH=31
将月份更改为 11 月日历返回 ->YEAR=2018,MONTH=10,WEEK_OF_YEAR=1,WEEK_OF_MONTH=6,DAY_OF_MONTH=31
这实际上是不正确的(第 10 个月(11 月)没有 31 day_of_month)并且 12 月 1 日在 JCalendar 中被选中。我希望 11 月 30 日在这里被选中。
问题是 propertyChangeListener 被调用了两次。假设我的日期是 12 月 31 日,我将其设置为 11 月 30 日。第一次,日期更改为 12 月 30 日(进入我认为的 11 月范围),第二次将日期更改为 11 月 30 日。如果我只打印 evt.getNewValue() 但如果我尝试通过调用其他方法来设置日期,它只会在 12 月 30 日卡住!
java - 日历日期不同
为什么Calendar
在 Android 中在不同的 Android 设备上给出不同的日期?我确实获得了默认语言环境,但我仍然遇到同样的问题。
代码:
java - 公历日期至今
这应该很简单
customerSearch.get("DateOfBirth")
其中customerSearch 是a HashMap<String, Object>
,它是公历日期。
但我需要一个普通的Date
对象。
我试过了
但说公历日期不能转换为日期。
有什么帮助吗?