import java.text.ParsePosition;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class Main {
public static void main
(String[] args
) { String strDateTime
="Jun 26th 2021, 04:30:15 pm NY";
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("[MMMM][MMM] ") // caters for both full name and 3-letter abbv.
.appendText(ChronoField.DAY_OF_MONTH, ordinalMap())
.appendPattern(" u, h:m:s a")
LocalDateTime ldt
= LocalDateTime.
from(dtf.
parse(strDateTime,
new ParsePosition(0))); ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/New_York"));
}
static Map
<Long, String
> ordinalMap
() { String[] suffix
= { "th",
"st",
"nd",
"rd",
"th",
"th",
"th",
"th",
"th",
"th" }; Map
<Long, String
> map
= new HashMap
<>();
for (int i = 1; i <= 31; i++)
map.
put((long)i,
String.
valueOf(i
) + suffix
[(i
> 3 && i
< 21) ? 0 : (i
% 10)]);
return map;
}
}
aW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOwppbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CmltcG9ydCBqYXZhLnRpbWUuWm9uZUlkOwppbXBvcnQgamF2YS50aW1lLlpvbmVkRGF0ZVRpbWU7CmltcG9ydCBqYXZhLnRpbWUuZm9ybWF0LkRhdGVUaW1lRm9ybWF0dGVyOwppbXBvcnQgamF2YS50aW1lLmZvcm1hdC5EYXRlVGltZUZvcm1hdHRlckJ1aWxkZXI7CmltcG9ydCBqYXZhLnRpbWUudGVtcG9yYWwuQ2hyb25vRmllbGQ7CmltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwoKcHVibGljIGNsYXNzIE1haW4gewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCVN0cmluZyBzdHJEYXRlVGltZSA9Ikp1biAyNnRoIDIwMjEsIDA0OjMwOjE1IHBtIE5ZIjsKCQoJCURhdGVUaW1lRm9ybWF0dGVyIGR0ZiA9IG5ldyBEYXRlVGltZUZvcm1hdHRlckJ1aWxkZXIoKQogICAgICAgICAgICAgICAgLnBhcnNlQ2FzZUluc2Vuc2l0aXZlKCkKICAgICAgICAgICAgICAgIC5hcHBlbmRQYXR0ZXJuKCJbTU1NTV1bTU1NXSAiKSAvLyBjYXRlcnMgZm9yIGJvdGggZnVsbCBuYW1lIGFuZCAzLWxldHRlciBhYmJ2LgogICAgICAgICAgICAgICAgLmFwcGVuZFRleHQoQ2hyb25vRmllbGQuREFZX09GX01PTlRILCBvcmRpbmFsTWFwKCkpCiAgICAgICAgICAgICAgICAuYXBwZW5kUGF0dGVybigiIHUsIGg6bTpzIGEiKQogICAgICAgICAgICAgICAgLnRvRm9ybWF0dGVyKExvY2FsZS5FTkdMSVNIKTsKCgkJTG9jYWxEYXRlVGltZSBsZHQgPSBMb2NhbERhdGVUaW1lLmZyb20oZHRmLnBhcnNlKHN0ckRhdGVUaW1lLCBuZXcgUGFyc2VQb3NpdGlvbigwKSkpOwoJCVpvbmVkRGF0ZVRpbWUgemR0ID0gbGR0LmF0Wm9uZShab25lSWQub2YoIkFtZXJpY2EvTmV3X1lvcmsiKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKHpkdCk7Cgl9CglzdGF0aWMgTWFwPExvbmcsIFN0cmluZz4gb3JkaW5hbE1hcCgpIHsKICAgICAgICBTdHJpbmdbXSBzdWZmaXggPSB7ICJ0aCIsICJzdCIsICJuZCIsICJyZCIsICJ0aCIsICJ0aCIsICJ0aCIsICJ0aCIsICJ0aCIsICJ0aCIgfTsKICAgICAgICBNYXA8TG9uZywgU3RyaW5nPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMzE7IGkrKykgCiAgICAgICAgICAgIG1hcC5wdXQoKGxvbmcpaSwgU3RyaW5nLnZhbHVlT2YoaSkgKyBzdWZmaXhbKGkgPiAzICYmIGkgPCAyMSkgPyAwIDogKGkgJSAxMCldKTsKICAgICAgICAKICAgICAgICByZXR1cm4gbWFwOwogICAgfQp9