【问题标题】:Unusual output while parsing Date解析日期时输出异常
【发布时间】:2018-04-18 01:54:03
【问题描述】:

我遇到了一些问题,我有下一个代码

String timeOut = "1900-01-01" + " " + cmbHourOut.getSelectedItem() + ":" + cmbMinutesOut.getSelectedItem() + ":00";
        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
        Date date = formatter.parse(timeOut);
        java.sql.Date sqlDate = new java.sql.Date(date.getTime());

所以,我期待“1900-01-01 21:30:00”,但我只在输出中得到“1900-01-01”,有什么想法吗?

我尝试打印 timeOut,它打印的是:1900-01-01 21:30:00,所以我很困惑。我是不是解析错了什么?

【问题讨论】:

    标签: java sql date parsing


    【解决方案1】:

    只需将您的变量替换回日期即可。还要将 SS 设为小写,因为大写意味着不同的含义

            String timeOut = "1900-01-01 11:32:00";
            DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = formatter.parse(timeOut);
    
            System.out.println(formatter.format(date));
    

    输出:

    1900-01-01 11:32:00
    BUILD SUCCESSFUL (total time: 0 seconds)
    

    【讨论】:

    • 同理,我认为 Stefan 是对的,Date 仅使用 yyyy-mm-dd 格式,所以这就是原因。我试过你的代码,它在我的电脑上打印出来的一样。
    • 是的,本例中使用了 java.util.Date。
    【解决方案2】:

    java.sql.Date 时间使用yyyy-mm-dd 格式。 这就是你的小时、分钟、秒消失的原因。

    您应该坚持java.util.Date 来跟踪您的时间。

    【讨论】:

    • 那我应该用什么呢?请记住,我需要将其存储到数据库中。
    • 你是存储在 sqlite 还是服务器端?无论哪种方式,您都可以将其存储为字符串。
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多