问题标签 [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.

0 投票
1 回答
1018 浏览

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()

0 投票
0 回答
26 浏览

java - Android DatePickerDialog 创建随机错误月份

当我实现 DatePickerDialog 时,它显示正确的日期,但是当我单击确定在 EditText 中设置日期时,我得到一个月份不正确的日期字符串,每次尝试时似乎都是随机的

为了显示 DatePickerDialog,我有这个功能

}

这是日志输出

我包括了一些datepickerdialog日期字符串的屏幕截图

0 投票
1 回答
1269 浏览

android - 为什么 calendar.add() 返回 31/9/2018

我想从今天(29/9/2018)开始添加 2 天,我使用:

但是当我记录()它时,日期不是 2018 年 1 月 10 日,而是 2018 年 9 月 31 日

0 投票
2 回答
817 浏览

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 月。为什么?我已经脑残了。

0 投票
2 回答
66 浏览

java - Java:GregorianCalendar 奇怪的输出

我是 Java 新手,我正在尝试使用以下代码获取昨天的日期:

我得到的输出是:

325-XI-2018

我究竟做错了什么?

0 投票
1 回答
57 浏览

java - 与等效的日历代码相比,生成的 java.time 代码是否具有更多代码语句

最近,我尝试将我们的一个旧代码库从 移植Calendarjava.time,因为我们需要相当多的算术功能,而这些功能只能在java.time.

如果我们Calendar在当前的代码库中使用,我们需要在代码中间执行大量的来回转换(From Calendarto Instant, From Instantback to Calendar)。

为了避免这种繁琐的转换,我们决定取消使用Calendar,并将它们移植到等效的java.time代码中。

我对我的端口有点怀疑。与日历代码相比,它似乎

  • 在 while 循环中创建更多临时对象实例。
  • 需要更多的代码语句。

日历代码

java.time 代码


对于上面的代码,我想知道,我们是否正确地进行了移植并进行了优化?我们java.time的港口有什么可以改进的地方吗?

0 投票
1 回答
927 浏览

java - 默认更改日历日期

我在android项目中遇到了一个奇怪的问题。我正在尝试将日期转换为其他日期,为此,我正在计算两个日期之间的天数。所以,这就是我的实施方式。

这是我的 baseEngDate 日历。set 方法有 3 个参数,它们具有以下参数,它们的默认值是:

但是,当我尝试在这个函数中检查它们的值时,

我在日志中得到了这个值,这不是我所期望的:

它应该返回 01 01 1944 但它返回 01 02 1994。为什么?

0 投票
0 回答
783 浏览

java - Calendar.getTime 返回不正确的日期

我有一个JCalendarpropertyChangeListener,我在其中使用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 日卡住!

0 投票
1 回答
78 浏览

java - 日历日期不同

为什么Calendar在 Android 中在不同的 Android 设备上给出不同的日期?我确实获得了默认语言环境,但我仍然遇到同样的问题。

代码:

0 投票
2 回答
1537 浏览

java - 公历日期至今

这应该很简单

customerSearch.get("DateOfBirth")其中customerSearch 是a HashMap<String, Object>,它是公历日期。

但我需要一个普通的Date对象。

我试过了

但说公历日期不能转换为日期。

有什么帮助吗?