如何将字符串转换为格式的日期yyyy-MM-dd HH:MM:ss

时间:2016-07-16 11:59:38

标签: java date simpledateformat

我有一个像"2015-07-16 17:07:21"这样的字符串。我想将其转换为相同格式的日期。我试过这样的事情:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
Date date = sdf.parse("2015-07-16 17:07:21"); 

但输出的格式与Thu Jul 16 17:00:21 IST 2015不同。我怎样才能让它按需要运行。谁能帮我。我知道这可能是重复但我没有找到任何运气。

4 个答案:

答案 0 :(得分:10)

来自Java API https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

  

类Date表示特定的时刻,精度为毫秒。

尝试了解orElse(null)Date的差异/连接。

DateFormat

输出:(请注意,日期保持不变,只是其表示(格式)更改)

public static void main(String [] args) throws ParseException{
    String dateString = "2015-07-16 17:07:21";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    // use SimpleDateFormat to define how to PARSE the INPUT
    Date date = sdf.parse(dateString);

    // at this point you have a Date-Object with the value of
    // 1437059241000 milliseconds
    // It doesn't have a format in the way you think

    // use SimpleDateFormat to define how to FORMAT the OUTPUT
    System.out.println( sdf.format(date) );

    sdf = new SimpleDateFormat();
    System.out.println( sdf.format(date) );

  // ....
}

答案 1 :(得分:0)

尝试格式化字符串,如:yyyy-MM-dd HH:mm:ss

M:月,m:分钟

public static void main(String [] args){
    String dateString = "2015-07-16 17:07:21";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date;
    try {
        date = sdf.parse(dateString);
    } catch (ParseException e) {
        e.printStackTrace();
        return;
    } 
    System.out.println(sdf.format(date));
    System.out.println(dateString.equals(sdf.format(date)));
}

另外,日期没有格式,它有一个代表某个时间点的值。如果你想以某种格式显示它,你应该使用SimpleDateFormat

答案 2 :(得分:0)

尝试使用它:

    public static void main(String[] args) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateInString = "2015-07-16 17:07:21";
    try {

        Date date = formatter.parse(dateInString);

        System.out.println(date);
        System.out.println(formatter.format(date));

    } catch (ParseException e) {
        e.printStackTrace();
    }
}

输出:

Thu Jul 16 17:07:21 IST 2015
2015-07-16 17:07:21

注意: 有关完整的日期和时间模式,请参阅此http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

答案 3 :(得分:-1)

请参阅此代码:

public static void main(String [] args){
    String dateString = "2015-07-16 17:07:21";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date;
    try {
        date = sdf.parse(dateString);
    } catch (ParseException e) {
        e.printStackTrace();
        return;
    } 
    System.out.println(date); // Displays date in it's default format Jul 16 17:00:21 IST 2015
    System.out.println(dateString.equals(date)); // Returns false since 'Jul 16 17:00:21 IST 2015' is not equal to dateString (2015-07-16 17:07:21)
}

日期类始终以默认格式存储日期。 SimpleDateFormat有助于使用其对象格式化日期。它不会对日期类对象进行任何更改。而是将Date类转换为用户定义的格式,该格式对Date类对象没有任何影响。我想很清楚。