【问题标题】:Parsing String into a Calendar object将字符串解析为日历对象
【发布时间】:2015-03-08 19:47:56
【问题描述】:

我无法将仅包含 MONTH 和 DAY 信息的字符串解析为日期对象。浏览其他线程,我决定使用 SimpleDateFormatter。这是我的代码:

void checkDay(Calendar now) {
    Calendar cal = Calendar.getInstance(now.getTimeZone());
    for (String holiday : usHolidayList) {
        Date holidayDate = null;
        try {
            holidayDate = new SimpleDateFormat("MM/DD").parse(holiday);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        checkNotNull(holidayDate);
        cal.setTime(holidayDate);
        if (now.get(Calendar.MONTH) == cal.get(Calendar.MONTH) && now.get(Calendar.DAY_OF_MONTH) == cal.get(Calendar.DAY_OF_MONTH)) {
            return true;
        }
    }
    return false;
}

usHolidayList 就像 --> "01/01", 05/25" 仅包含 MONTH 和 DAY 信息。我只需要获取 05/25 并将其转换为日期即可。我不在乎年份或时间分量。

使用我当前的代码,DAY 似乎被正确解析,但 MONTH 始终设置为一月。

Thu Jan 01 00:00:00 UTC 1970
Sun Jan 25 00:00:00 UTC 1970

我希望它是 1970 年 1 月 1 日星期四 00:00:00 UTC 1970 年 5 月 25 日星期日 00:00:00 UTC

真的很感激一些想法。

【问题讨论】:

    标签: java string date simpledateformat date-formatting


    【解决方案1】:

    我发现我做错了什么。这是 SimpleDateFormatter 中的模式 holidayDate = new SimpleDateFormat("MM/DD").parse(holiday);

    应该是: holidayDate = new SimpleDateFormat("MM/dd").parse(holiday);

    DD - 一年中的一天 dd - 一个月中的一天(这是我想要的) 由于我所有的日期都在 30 以内,所以我相信它是 1 月

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多