为啥我不能在 java 中使用 SimpleDateFormat 得到正确的年份?
Posted
技术标签:
【中文标题】为啥我不能在 java 中使用 SimpleDateFormat 得到正确的年份?【英文标题】:Why don't I get the year right using SimpleDateFormat in java?为什么我不能在 java 中使用 SimpleDateFormat 得到正确的年份? 【发布时间】:2010-11-04 21:58:37 【问题描述】:我试图解析mysql
格式的数据,我遇到了SimpleDateFormat
。我可以得到正确的日期和月份,但是我得到了一个奇怪的结果:
date = 2009-06-22;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(date);
System.println(date);
System.println(d.getDate());
System.println(d.getMonth());
System.println(d.getYear());
输出:
2009-06-22
22 OK
5 Hum... Ok, months go from 0 to 11
109 o_O WTF ?
我尝试将格式更改为YYYY-MM-dd
(出错)和yy-MM-dd
(什么也没做)。我在安卓上编程,不知道重要不。
目前,我使用拆分绕过它,但它很脏,并阻止我使用 i18n 功能。
【问题讨论】:
【参考方案1】:年份是相对于 1900 年的。这是 Date
类的“特征”。尝试使用Calender
。
【讨论】:
好的,知道了。我会发布答案。【参考方案2】:感谢 Aaron,正确的版本:
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
【讨论】:
以上是关于为啥我不能在 java 中使用 SimpleDateFormat 得到正确的年份?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能使用 Ubuntu 编译我的 Java 应用程序?
为啥使用类变量的这段代码不能像在 Java 中那样工作? [复制]
Java 泛型与 C++ 模板有何不同?为啥我不能使用 int 作为参数?
为啥我们不能在(非静态)内部类(Java 16 之前)中使用静态方法?
在 Java 7 ConcurrentHashMap 中,为啥在写的时候需要段锁?为啥我们不能再次使用 Unsafe 来保持非阻塞?