İşte ISO dize tarih gibi bakarak oldukça her şey için eşleştirme nihai kalıptır!
Ben hala neden bilmiyorum yorumlarda ama iki haricinde testlerin aşağıdaki listede için çalışır
"[yyyyMMdd][yyyy-MM-dd][yyyy-DDD]['T'[HHmmss][HHmm][HH:mm:ss][HH:mm][.SSSSSSSSS][.SSSSSS][.SSS][.SS][.S]][OOOO][O][z][XXXXX][XXXX]['['VV']']"
...
ZonedDateTime dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+02:00:00[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+02:00[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+020000[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+0200[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+0000[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993Z[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993GMT+1[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993UTC[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993PST[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+02:00[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+020000[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+0200[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+0000[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08Z[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08GMT+1[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08UTC[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08PST[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08[Europe/Paris]");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+02:00:00");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+02:00");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+020000");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+0200");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993+0000");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993Z");
//dt = DateTimeUtils.parse("2016-10-27T16:36:08.993GMT+1");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993UTC");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993PST");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.993");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.000993");
dt = DateTimeUtils.parse("2016-10-27T16:36:08.000000993");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+02:00:00");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+02:00");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+020000");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+0200");
dt = DateTimeUtils.parse("2016-10-27T16:36:08+0000");
dt = DateTimeUtils.parse("2016-10-27T16:36:08Z");
//dt = DateTimeUtils.parse("2016-10-27T16:36:08GMT+1");
dt = DateTimeUtils.parse("2016-10-27T16:36:08UTC");
dt = DateTimeUtils.parse("2016-10-27T16:36:08PST");
dt = DateTimeUtils.parse("2016-10-27T16:36:08");
dt = DateTimeUtils.parse("2016-100T16:36:08Z");
dt = DateTimeUtils.parse("2016-100T16:36.1Z");
dt = DateTimeUtils.parse("2016-10-27");
dt = DateTimeUtils.parse("20161223T163608");
dt = DateTimeUtils.parse("20161223T1636");
Ve ayrıştırma yöntemi kendisi:
public static ZonedDateTime parse(CharSequence text) {
TemporalAccessor temporalAccessor = LOOSE_ISO_DATE_TIME_ZONE_PARSER.parseBest(text, ZonedDateTime::from, LocalDateTime::from, LocalDate::from);
if (temporalAccessor instanceof ZonedDateTime) {
return ((ZonedDateTime) temporalAccessor);
}
if (temporalAccessor instanceof LocalDateTime) {
return ((LocalDateTime) temporalAccessor).atZone(ZoneId.systemDefault());
}
return ((LocalDate) temporalAccessor).atStartOfDay(ZoneId.systemDefault());
}
İsteğe bağlı olmasını düşündüğünüz kolon, bölge ofset bölümünün bir parçasını sabitler. Sadece desen harfleri X (iki nokta üst üste) veya XXX (iki nokta üst üste) arasından seçim yapabilirsiniz. Yani tüm bölge ofseti opsiyoneldir, sadece içindeki kolon değildir. –
Katılıyorum, işe yaramalı. Ancak [X] kullandığımda, kolonsuz bir ofset olmasını beklerim ve [XXX] kullandığımda, kolonlu bir ofset olmasını bekler. İkisini birlikte kullanamam. –
Javadoc'a göre: X sembolü ile birlikte örnekler verilmiştir: Z; -08; -0830; -08: 30; -083.015; -08: 30: 15; –