我正在做一个与Android相关的学习项目。我试图使用下面的代码获取当前年份和月份,但它对我不起作用。
GregorianCalendar gc = new GregorianCalendar();
gc.YEAR // returning 1
gc.MONTH // returning 2
Calendar c = Calendar.getInstance();
c.YEAR // returning 1
c.MONTH // returning 2
有人能帮我吗?难道我做错了什么?请原谅我是java开发新手。谢谢。
只是为了提供更多背景信息:
Both new GregorianCalendar()
and Calendar.getInstance()
将正确给出在当前日期和时间初始化的日历。
MONTH
and YEAR
are 常量内Calendar http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html班级。你应该not“通过”引用使用它们,这使得它们看起来像是对象状态的一部分。这是设计中不幸的一部分Calendar
要访问不同字段的值,您需要调用的类get
带有字段编号,指定为这些常量之一,如其他答案所示:
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
请注意,月份数字是从 0 开始的,因此在撰写本文时(四月)月份数字将为 3。
这是 Java 语言设计中一个不幸的部分,您can通过该类型的表达式引用静态成员(例如常量),而不是only通过类型名称。
我的建议:
- 如果您的 IDE 允许(如 Eclipse 那样),请创建如下表达式:
c.YEAR
给出编译时错误 - 如果你总是使用,你最终会得到更清晰的代码Calendar.YEAR
.
- 在可能的情况下,使用乔达时间 http://www.joda.org/joda-time/- 一个更好的 Java 日期/时间库。诚然,在 Android 上,您可能会受到一些空间限制,但如果您的应用程序进行大量日期/时间操作,那么它会为您省去很多麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)