使用“ yyyy-MM-dd hh:mm:ss”模式分析日期

时间:2018-08-17 05:47:27

标签: java date simpledateformat

我正面临“ yyyy-MM-dd hh:mm:ss”日期解析模式的怪异行为。 下面是我的代码。

    public static void main(String[] args) throws Exception {
        System.out.println(parseDate("2018-08-16 11:00:00"));
        System.out.println(parseDate("2018-08-16 12:00:00"));
        System.out.println(parseDate("2018-08-16 13:00:00"));
    }

    public static Date parseDate(String date) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        return sdf.parse(date);
    }

我正在关注以下输出

  

2018年UTC星期四8月16日11:00:00

     

UTC 2018年8月16日00:00:00

     

2018年世界标准时间8月16日13:00:00

我不明白第二个输出为何表示“ 2018-08-16 12:00:00”的说法,即UTC 2018年8月16日星期四00:00:00而不是UTC 2018年8月16日星期四12:00:00。

查看here中的日期解析模式文档。它说

  

h->上午/下午的小时数(1-12)

有人可以解释一下吗? 谢谢您。

3 个答案:

答案 0 :(得分:0)

希望这会有所帮助

public static void main(String[] args) throws Exception {
    System.out.println(parseDate("2018-08-16 11:00:00 AM"));
    System.out.println(parseDate("2018-08-16 12:00:00 PM"));
    System.out.println(parseDate("2018-08-16 13:00:00 AM"));
}

public static Date parseDate(String date) throws Exception {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
    return sdf.parse(date);
}

输出

Thu Aug 16 11:00:00 IST 2018 Thu Aug 16 12:00:00 IST 2018 Thu Aug 16 13:00:00 IST 2018

答案 1 :(得分:0)

对于hh,您应该使用Hour in day (0-23)而不是public class TestP{ public static void main(String[] args) throws Exception { System.out.println(parseDate("2018-08-16 11:00:00")); System.out.println(parseDate("2018-08-16 12:00:00")); System.out.println(parseDate("2018-08-16 13:00:00")); System.out.println(parseDate("2018-08-16 23:00:00")); } public static Date parseDate(String date) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd H:mm:ss"); return sdf.parse(date); } }

TestP:

Thu Aug 16 11:00:00 CLST 2018
Thu Aug 16 12:00:00 CLST 2018
Thu Aug 16 13:00:00 CLST 2018
Thu Aug 16 23:00:00 CLST 2018

输出:

{{1}}

文档:SimpleDateFormat

答案 2 :(得分:0)

您已更改波纹管

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

DateFormat writeFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");

下面的小时日期格式,

kk :- Hours in 1-24 format
hh :- hours in 1-12 format
KK :- hours in 0-11 format
HH :- hours in 0-23 format