我尝试使用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。
答案 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
。