fork download
  1. import java.text.ParsePosition;
  2. import java.time.LocalDateTime;
  3. import java.time.ZoneId;
  4. import java.time.ZonedDateTime;
  5. import java.time.format.DateTimeFormatter;
  6. import java.time.format.DateTimeFormatterBuilder;
  7. import java.time.temporal.ChronoField;
  8. import java.util.HashMap;
  9. import java.util.Locale;
  10. import java.util.Map;
  11.  
  12. public class Main {
  13. public static void main(String[] args) {
  14. String strDateTime ="Jun 26th 2021, 04:30:15 pm NY";
  15.  
  16. DateTimeFormatter dtf = new DateTimeFormatterBuilder()
  17. .parseCaseInsensitive()
  18. .appendPattern("[MMMM][MMM] ") // caters for both full name and 3-letter abbv.
  19. .appendText(ChronoField.DAY_OF_MONTH, ordinalMap())
  20. .appendPattern(" u, h:m:s a")
  21. .toFormatter(Locale.ENGLISH);
  22.  
  23. LocalDateTime ldt = LocalDateTime.from(dtf.parse(strDateTime, new ParsePosition(0)));
  24. ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/New_York"));
  25. System.out.println(zdt);
  26. }
  27. static Map<Long, String> ordinalMap() {
  28. String[] suffix = { "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th" };
  29. Map<Long, String> map = new HashMap<>();
  30.  
  31. for (int i = 1; i <= 31; i++)
  32. map.put((long)i, String.valueOf(i) + suffix[(i > 3 && i < 21) ? 0 : (i % 10)]);
  33.  
  34. return map;
  35. }
  36. }
Success #stdin #stdout 0.17s 54836KB
stdin
Standard input is empty
stdout
2021-06-26T16:30:15-04:00[America/New_York]