【问题标题】:Can't change Calendar DAY_OF_MONTH in Java无法在 Java 中更改日历 DAY_OF_MONTH
【发布时间】:2018-06-13 17:18:17
【问题描述】:

我在 Java 日历设置中有一点问题。问题是我有这段代码,它返回"1980.09.12."

我可以随意更改年份和月份,但不能更改日期。

public class printableBeosztas extends HttpServlet {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.");
    Calendar calHetfo;

    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        setDates();
        response.getWriter().append(sdf.format(calHetfo.getTime());
    }

    public void setDates() {
        calHetfo = Calendar.getInstance();
        calHetfo.set(Calendar.MONTH, 8);
        calHetfo.set(Calendar.YEAR, 1980);
        calHetfo.set(Calendar.DAY_OF_MONTH, 3);
    }
}

有什么想法吗?

【问题讨论】:

  • 我已经使用了 setDates() 它按预期工作。你一直在哪里使用这个?以及您如何在代码中使用 SimpleDateFormat?
  • 这是一个 servlet,我想用它来列出从一个日期到另一个日期的所有班次数据。通常是从星期一到星期五,我使用 day_of_week 从这个 calHetfo 生成另一个日期。除了这个 day_of_month,一切都运行良好。我使用 sdf 只是将日历转换为日期格式。

标签: java date calendar dayofmonth


【解决方案1】:

如果您使用 Java 8+ 的 java.time API 会更容易,您可以使用 LocalDate.of 并设置您想要的任何内容:

LocalDate ld = LocalDate.of(1980, Month.SEPTEMBER, 12);

要格式化日期,您可以使用:

String format = ld.format(DateTimeFormatter.ofPattern("yyyy.MM.dd."));

【讨论】:

  • 谢谢,它正在工作。但仍然不知道为什么我的代码不起作用
  • 我在您的代码中没有看到任何问题,它是否给您带来了错误?
  • 没有错误,只是不是预期的结果。除了那一天,我可以改变一切
  • 我尝试了你的代码,它对我来说很好,检查idone demo
  • @Andor 无论您的问题的神秘原因是什么,这都是没有实际意义的,因为那些旧的日期时间类确实是一团糟,应该避免。最好忘记它们,不要再浪费时间试图弄清楚它们,然后继续前进。 java.time 类完全替换了它们,包括 java.util.Datejava.util.Calendarjava.sql.Timestampjava.sql.Date 等。从 Java 8 和 JDBC 4.2 开始,无需再接触再次遗留类。对于与尚未更新到 java.time 的旧代码的接口,您可以通过添加到旧类的新转换方法来回转换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多