Skip to content

Instantly share code, notes, and snippets.

@barkanido
Created April 2, 2019 06:43
Show Gist options
  • Save barkanido/3446b89b5db06d84ada960dbb4ea6515 to your computer and use it in GitHub Desktop.
Save barkanido/3446b89b5db06d84ada960dbb4ea6515 to your computer and use it in GitHub Desktop.
multi fprmatter (parser) for timstamps in java 8 time aPI
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
public class Main {
public static void main(String[] args) {
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
//.appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
//.optionalStart().appendPattern("yyyy-MM-dd'T'HH:mm").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSZ").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd HH:mm:ss.SSS").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd'T'HH:mm:ss.SSS").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd HH:mm:ssZ").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd HH:mm:ss").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd'T'HH:mm:ss").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd_HHmmssZ").optionalEnd()//
.optionalStart().appendPattern("yyyy-MM-dd HH:mm").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd_HHmmZ").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd_HH:mmZ").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd'T'HH:mm").optionalEnd()
.optionalStart().appendPattern("yyyy-MM-dd").optionalEnd()
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseDefaulting(ChronoField.NANO_OF_SECOND, 0)
.toFormatter().withZone(ZoneId.of("Etc/UTC"));
System.out.println(ZoneId.getAvailableZoneIds());
System.out.println(LocalDateTime.parse( "2018-03-16", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16 22:22", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16_22:22+0100", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16_2222-0100", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16T22:22", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16 22:22:33", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16 22:22:33-0300", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16_222233-0300", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16T22:22:33", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16 22:22:33.999", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16T22:22:33.999", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16T22:22:33.1234567+0230", formatter ));
System.out.println(LocalDateTime.parse( "2018-03-16 22:22:33.1234567+0230", formatter ));
System.out.println("-------------------------------");
System.out.println(ZonedDateTime.parse( "2018-03-16", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16 22:22", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16_22:22+0100", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16_2222-0100", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16T22:22", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16 22:22:33", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16 22:22:33-0300", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16_222233-0300", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16T22:22:33", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16 22:22:33.999", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16T22:22:33.999", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16T22:22:33.1234567+0230", formatter ));
System.out.println(ZonedDateTime.parse( "2018-03-16 22:22:33.1234567+0230", formatter ));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment