如何以人类可读的方式在Java中显示Calendar?

时间:2016-07-03 17:16:00

标签: java debugging intellij-idea

我有两个由Calendar对象组成的数组列表。我需要这两个列表来包含相同的对象并且顺序相同 - 但事实并非如此。我在调试器模式下运行程序来检查列表的内容,但对象描述是乱码。我只是想知道每一步的年,月和日是否相同。

这是我的调试器显示的内容:

enter image description here

当我点击每个索引旁边的箭头以显示更多信息时,我仍然找不到我需要的东西。有没有解决的办法?或许还有另一种我不熟悉的调试工具?在这个阶段,我的调试技巧仅限于放置断点并单击错误图标。

感谢任何帮助。

3 个答案:

答案 0 :(得分:8)

  • 右键点击其中一个日历。
  • 选择自定义数据视图...
  • 转到第二个标签:Java数据类型渲染器
  • 点击+图标并命名您的渲染器(例如日历)
  • 在“将渲染器应用于类型为...的对象”
  • 框中键入java.util.Calendar
  • 选中单选按钮“使用以下表达式”
  • 键入以下表达式(例如):new SimpleDateFormat("yyyy-MM-dd").format(getTime())
  • 单击“确定”。

答案 1 :(得分:1)

如果您需要处理TimeZones,可以将此扩展用于JB Nizet解决方案:

new SimpleDateFormat("dd-MM-yyyy HH:mm:ss.SSS").format(getTime()) + " " + getTimeZone().getDisplayName(false,TimeZone.SHORT) + " " + getTimeZone().getRawOffset()/3600000

示例输出:

enter image description here

显示TimeZone名称和以小时为单位的偏移量

答案 2 :(得分:0)

也可以进行全局配置,转到此处查看所有活动的详细格式化程序并添加新的格式化程序: 偏好设置> Java > 调试> 详细格式化程序

合格的类型名称:java.util.Calendar

详细格式化代码片段返回您定义的字符串,在我的情况下是日期格式的日期+时间:

this.get(Calendar.DAY_OF_MONTH ) + "." + 
(1 + this.get(Calendar.MONTH ) ) + "." + 
this.get( Calendar.YEAR )

这是偏好中的样子: detailFormatterCalendar