繁体   English   中英

java Date类-为什么这些行中还有其他日期输出?

[英]java Date class - Why I have other date output in these lines?

我的代码:

 SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
 Date date = new Date();

System.out.println(sdf.format(date));
System.out.println(sdf.format(sdf.parse(sdf.format(date))));

这个输出我得到:

2013-02-08 15:48:37
2013-12-30 15:48:37

预期输出:

2013-02-08 15:48:37
2013-02-08 15:48:37

看日期的日期和月份

问题来自“解析”方法

==>“从给定字符串的开头解析文本以产生日期。该方法可能不会使用给定字符串的整个文本。”

The method may not use the entire text of the given string.

我已经运行了您的代码,并得到以下内容:

System.out.println(sdf.format(date));
System.out.println(sdf.parse(sdf.format(date)));
System.out.println(sdf.format(sdf.parse(sdf.format(date))));

结果:

2013-02-08 14:54:39
Mon Dec 31 14:54:39 CET 2012
2013-12-31 14:54:39

如您所见,parse函数可以正确转换时间,但不能转换日期本身。 我认为不打算以这种方式使用它,因此会产生奇怪的结果。

但是,这是我第一次注意到这一点,因此我将无法提供更多详细信息:)

为了简单起见,让我们使用一个基本的测试用例:

String date = "2013-02-08 15:48:37";
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
System.out.println(sdf.parse(date));

// Output: Mon Dec 31 15:48:37 CET 2012

根据SimpleDateFormat Javadoc ,格式说明符Y用来表示“周年”。 “年份”的正确格式说明符是y这样,我们将获得正确的输出:

sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.parse(date));

// Output: Fri Feb 08 15:48:37 CET 2013

假设log是某种记录器,则其标准做法是让他们打印出每行的时间日期和日志级别。 如果需要的话,可以更轻松地从日志中进行调试,

我无法重现此内容:

public static void main(String[] args) {
    // TODO code application logic here
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = new Date();

    Logger log = Logger.getLogger("InfoLogging");

    log.info(sdf.format(date));
    try {
        log.info(sdf.format(sdf.parse(sdf.format(date))));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

给出输出:

Feb 8, 2013 2:57:09 PM javaapplication2.JavaApplication2 main
INFO: 2013-02-08 14:57:08
Feb 8, 2013 2:57:09 PM javaapplication2.JavaApplication2 main
INFO: 2013-02-08 14:57:08

您正在使用哪个记录仪?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM