相关疑难解决方法(0)

为什么Java date API(java.util.Date,.Calendar)如此混乱?

正如大多数人现在痛苦地意识到的那样,用于处理日历日期的Java API(特别是类java.util.Datejava.util.Calendar)是一个糟糕的混乱.

脱离我的头顶:

  • 日期是可变的
  • 日期表示时间戳,而不是日期
  • 没有简单的方法来转换日期组件(日,月,年...)和日期
  • 日历使用起来很笨,并试图将不同的日历系统组合成一个类

这篇文章总结得很好,JSR-310也解决了这些问题.

现在我的问题是:

这些类是如何进入Java SDK的?大多数这些问题看起来相当明显(特别是Date是可变的)并且应该很容易避免.那怎么回事?时间压力?或者回想起来的问题是否明显?

我意识到这不是一个严格的编程问题,但我发现理解API设计如何出错是很有趣的.毕竟,错误总是一个很好的学习机会(我很好奇).

java api-design date

60
推荐指数
4
解决办法
1万
查看次数

为什么Java的Date.getYear()返回111而不是2011?

我在将字符串日期解析为Date对象时遇到了一些麻烦.我用a DateFormat来解析字符串,当我打印日期的值时,它给了我期望的东西.

但是,当我尝试得到一天,一个月或一年时,它给了我错误的价值.例如,这一年是2011年,但是当我这样做时,.getYear()它给了我111.我不知道为什么会这样.以下是相关的代码段:

    Date dateFrom = null;

    String gDFString = g.getDateFrom();

    System.out.println(gDFString);

    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

    try {
        dateFrom = df.parse("04/12/2011");

        System.out.println(dateFrom);

        System.out.println(dateFrom.getYear());
    } catch (ParseException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

当我打印出来时dateFrom,我得到了Sun Dec 04 00:00:00 GMT 2011,这就是你所期望的.但打印.getYear()回报111.

我需要能够获得时间序列图的日期,月份和年份.

java calendar date

43
推荐指数
4
解决办法
5万
查看次数

Calendar.get(Calendar.YEAR)返回错误的年份

我正在尝试从日期获取年份,并且Calendar.get(Calendar.YEAR)我获得3917年而不是2017年?但是,当我尝试检查输出时,date.getYear()它将返回正确的年份。

Date date = new Date(year, month, day);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Log.d(TAG, "onClick: year "+date.getYear());
Log.d(TAG, "onClick: year "+calendar.get(Calendar.YEAR));
Run Code Online (Sandbox Code Playgroud)

输出:

onClick:2017年

onClick:3917年

日期类显示正确的年份,但日历显示错误的年份

java calendar date

-2
推荐指数
1
解决办法
2721
查看次数

标签 统计

date ×3

java ×3

calendar ×2

api-design ×1