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

我有一个像"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 。 我怎样才能让它按照我的需要工作。 谁能帮我。 我知道这可能是重复但我没有找到任何运气。

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

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

尝试了解DateDateFormat的区别/连接。

 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) ); // .... } 

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

 2015-07-16 17:07:21 7/16/15 5:07 PM 

尝试格式字符串,如: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

试着用这个:

  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

看到这段代码:

 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类对象没有任何影响。 我想很清楚。