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

Java 如何将字符串转换为yyyy MM dd HH:MM:ss格式的日期?,java,simpledateformat,date-format,data-conversion,string-to-datetime,Java,Simpledateformat,Date Format,Data Conversion,String To Datetime,我有格式为:'20018-03-03 11:00:00'的字符串,我想转换为日期,但保留此格式。这可能吗?因为当我这样做的时候: Date.parse(string),当我使用 SimpleDataFormat。我做错了什么 我试过这个: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd

我有格式为:
'20018-03-03 11:00:00'
的字符串,我想转换为
日期
,但保留此格式。这可能吗?因为当我这样做的时候:

Date.parse(string)
,当我使用
SimpleDataFormat
。我做错了什么

我试过这个:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.parse(entry.getValue(), formatter);
String formatDateTime = now.format(formatter);
// Date date = df.parse(sqlDate);
Date d = (Date) formatter.parse(formatDateTime);
  • 在其他语言中可能不是这样,但在Java中,用于解析日期的格式并不存储在日期本身中。因此,当您想要打印(格式化)日期时,必须重复使用相同的格式

  • 旧的(
    Date
    SimpleDateFormat
    )和新的(
    LocalDateTime
    等)API不应混合在一起。除非您有遗留代码要处理,否则请坚持使用新代码

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
    // Parse: String -> LocalDateTime
    LocalDateTime now = LocalDateTime.parse("2018-03-03 11:00:00", formatter);
    
    // Format: LocalDateTime -> String
    System.out.println(now.format(formatter));
    

20018-这对您来说是有效的一年吗?还要避免使用这些旧的遗留日期类,而是使用LocalDateTime或ZonedDateTime。
Date
对象没有格式,它只是一个值,因此您的问题不相关。在日期对象上执行
System.out.print
操作时,您看到的是默认格式的日期字符串表示形式。无论何时需要特定格式的日期,都需要从
date
对象创建字符串。不,这是不可能的。
日期
不能有格式。另外,我建议您不要使用
Date
。那门课设计得很糟糕,而且早已过时。相反,请坚持使用
LocalDateTime
DateTimeFormatter
,即您已经在使用的类。在其他语言中,我也没有遇到过存储格式的日期类对象。这也是一个令人讨厌的设计。对象属于您的模型和业务逻辑。格式属于用户界面和序列化,例如用于传输。它们不应该混合在一起。完全同意你的意见。但我看到很多人希望他们的日期能以他们以前用来解析的格式打印出来,我得出结论,这在其他一些设计拙劣的语言中是很常见的行为。