gpt4 book ai didi

java - 如何让我的时间戳变量显示正确的日期?

转载 作者:行者123 更新时间:2023-11-30 02:58:25 25 4
gpt4 key购买 nike

所以我在让时间戳显示正确的月份时遇到了一些问题。一直显示16。我做错了什么?这是变量 timeStamp 的代码:

 Calendar.getInstance(TimeZone.getTimeZone("EST"));
this.timeStamp = ((Calendar.getInstance().get(Calendar.MONTH + 1)) + "/"
+ (Calendar.getInstance().get(Calendar.DAY_OF_MONTH)) + "/"
+ (Calendar.getInstance().get(Calendar.YEAR)) + " " + (Calendar.getInstance().get(Calendar.HOUR)) + ":"
+ (Calendar.getInstance().get(Calendar.MINUTE)) + ":" + (Calendar.getInstance().get(Calendar.AM_PM)));

最佳答案

Calendar.MONTH

是一个“不透明”符号常量,表示日期的月份字段。这里的术语“不透明”意味着您不应该知道或依赖实际值,它是 Calendar 类内部使用的编码魔数(Magic Number)。加 1 没有任何意义(详细信息见下文)。

你真正的意思是

(Calendar.getInstance().get(Calendar.MONTH) + 1) + "/" 

(注意括号的位置)将月份值从零源转换为 1 源。

正如 @Pillar 在评论中指出的那样,代码还有其他问题,但这就是您询问的问题。

<小时/>

幕后发生的事情:Calendar.MONTH 的值为 2,但这不是有用的信息。它只是一个内部索引,告诉Calendar 对象返回月份数字。在下一个版本(甚至下一个更新)中,该值可能会更改为完全不同的值。

您要求 API 返回由 3 索引的值。事实证明,值 3 对应于 Calendar.WEEK_OF_YEAR,因此您的查询返回当前周数。下一次 JDK 更新后,如果值 3 不再对应于有效索引,它可能会返回不同的内容,甚至可能引发异常。

实际上,由于向后兼容性问题,这些值不会改变,但这并不意味着您可以依赖始终具有相同值的符号。

关于java - 如何让我的时间戳变量显示正确的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36611385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com