相关疑难解决方法(0)

Java"周年"如何真正起作用?

这开始作为一个简单的错误:我有YYYY,而不是yyyy在我的格式字符串的SimpleDateFormat对象.但是我对使用不正确格式字符串的测试结果感到困惑.

这段代码:

@Test
public void whatTheHell() {
        try {
                SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");

                Date d1 = sdf.parse("01/07/2016");
                Date d2 = sdf.parse("02/08/2016");
                Date d3 = sdf.parse("11/29/2027");

                System.out.println(d1.toString());
                System.out.println(d2.toString());
                System.out.println(d3.toString());
        } catch (ParseException pe) {
                fail("ParseException: " + pe.getMessage());
        }
}
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

Sun Dec 27 00:00:00 PST 2015
Sun Dec 27 00:00:00 PST 2015
Sun Dec 27 00:00:00 PST 2026
Run Code Online (Sandbox Code Playgroud)

我在这里阅读了关于'Y'参数的文档:https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html,但我仍然看不到它的逻辑在这里工作.特别是最后一个例子:我可以有点理解1月(也可能是2月)的日期如何转化为上一年的12月,但将11月29日的日期向后移动11个月让我感到困惑.12月27日有什么特别之处?

谁能解释一下?

更多信息

@Jan建议依赖toString()方法可能是个问题,所以我定义了一个日期格式,以YYYY MM dd '-' yyyy MM dd …

java simpledateformat

20
推荐指数
2
解决办法
8366
查看次数

java中将字符串解析为日期格式默认日期为1,月份为一月

我正在尝试接受用户输入的日期格式,例如:“2000 小时,星期四,2015 年 7 月 20 日”。然后我会将其转换为日期格式以对其进行操作。但从字符串到日期的转换默认月份为一月,日期为 1。以下是代码片段:

    String userDateFormat = "HHmm 'hrs', EEEE, MMMM dd, YYYY";
    SimpleDateFormat userDateFormatter = new SimpleDateFormat(userDateFormat);
    String reference_date = "2000 hrs, Thursday, July 20, 2015";

    Date date = null;
    try {
        date = userDateFormatter.parse(reference_date);
    } catch (ParseException e) {
        System.out.println("Date must be in the format " + userDateFormat);
    }

    System.out.println(userDateFormatter.format(date));
Run Code Online (Sandbox Code Playgroud)

以下方法块打印:2000 小时,星期四,2015 年 1 月 1 日。有任何线索吗?

java

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

标签 统计

java ×2

simpledateformat ×1