如何在给定格式的Java中解析日期?

时间:2018-01-08 12:57:56

标签: java

我尝试使用java.util.Date date = Date.from( Instant.parse(minDates));来解析格式为Wed Jan 17 2001 00:00:00 GMT 0530的日期字符串。

我无法弄明白,如何在JAVA中做到这一点。

想要以给定格式转换给定日期字符串

  

2013-05-22T00:00:00

可能是我无法弄清楚,正确。如果有人有办法,那就建议我使用Java Only。

3 个答案:

答案 0 :(得分:0)

您可以使用SimpleDateFormat'parse'API来实现。

您可以使用任何有效的时间格式(例如yyyy-MM-dd HH:mm:ss z)初始化SimpleDateFormat,然后解析符合此格式的任何字符串。

REFF。到http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

一个额外的提示,使用JodaTime作为日期和Java中的SDF被弃用:http://www.joda.org/joda-time/

答案 1 :(得分:0)

以下是解决方案:

    String dateToParse = "Wed Jan 17 2001 00:00:00 GMT 0530";

    SimpleDateFormat in = new SimpleDateFormat("EEE MMM dd YYYY HH:mm:ss");
    SimpleDateFormat out = new SimpleDateFormat("YYYY-MM-dd'T'HH:mm:ss");

    Date date = in.parse( dateToParse );

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

如果所有日期都在同一时区(GMT 0530),它将起作用 否则应修改它以支持它,但我想你有相同的时区。

答案 2 :(得分:0)

如果您使用的是Java 8+,则可以使用java.time.LocalDateTime(或Instant ...)代替java.util.Date,这非常容易。

LocalDateTime ldt = LocalDateTime.parse("2013-05-22T00:00:00", DateTimeFormatter.ISO_LOCAL_DATE_TIME);

请注意,在这种情况下,第二个参数是可选的,但您可能必须指定一个(例如,使用时区ID)。

有一个没有外部的解决方案可以使用旧版本的Java并且可以很好地管理时区。它包括使用JAXB的DataTypeConverter

Date date =  javax.xml.bind.DatatypeConverter.parseDateTime("2013-05-22T00:00:00+01:00").getTime();

请注意,DatatypeConverter.parseDateTime会返回Calendar。您只需要将其getTime()方法调用为Date