将字符串日期转换为ISO格式日期

时间:2019-04-16 08:38:49

标签: java date java-8 timezone

我需要将某些字符串日期转换为另一种格式的字符串日期

String current = "Tue Apr 16 10:59:11 EDT 2019";

我想根据格式-“ yyyy-MM-dd'T'HH:mm:ss.SSSXX”获取格式为ISO-8601的结果日期字符串

您能帮我实现这一点吗?

3 个答案:

答案 0 :(得分:2)

使用Java8 DateTime API,您可以执行以下操作:

     //your input
     String date = "Tue Apr 16 10:59:11 EDT 2019";
     //create new formatter for parsing your input
     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss zzz yyyy", Locale.ENGLISH);
     //create new zonedDateTime from parsing an input with provided formatter
     ZonedDateTime zonedDateTime = ZonedDateTime.parse(date,formatter);

以您自己的格式获取它:

     //format your zonedDateTime with a new provided pattern
     String test = zonedDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXX"));
     //print it
     System.out.println(test);

答案 1 :(得分:0)

java中有一个SimpleDateFormat,并且那里有一个解析方法

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String dateString = format.format( new Date()   );
Date   date       = format.parse ( "2009-12-31" );      

答案 2 :(得分:0)

Java的时间类都没有完全实现ISO 8601,但是您可以尝试使用Java 8:

ZonedDateTime zp = ZonedDateTime.parse(string);
Date date = Date.from(zp.toInstant());
SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXX");
System.out.println(dt1.format(date));