Giriş
Şu satırı dahil ederiz.
Bu sınıfı kurmak için
1.DateTimeFormatterBuilder sınıfı kullanılabilir.
2. DateTimeFormatter.ofPattern() metodu kullanılabilir.
parse işlemi
1. Bu sınıfın kendi parse metodu kullanılabilir veya
2. Bu sınıfın nesnesi LocalDate.parse(), ZonedDateTime.parse (), OffsetDateTime.part() metoduna parametre olarak geçilebilir.
- Eğer birinci yöntem kullanılırsa DateTimeFormatter.parse() metodunun ikinci parametresi çıktı olaran hangi nesneyi istediğimizi belirtir.
- Eğer ikinci yöntem kullanılırsa zaten LocalDate.parse() zaten yine LocalDateTime nesnesi döndürür.
format işlemi
1. Bu sınıfın kendi format metodu kullanılabilir veya
2. Bu sınıfın nenesi LocateDateTime.format(), LocateDate.format() metoduna parametre olarak geçilebilir.
Her iki kullanımda da bir String elde deriz.
Sabit Alanlar
Soru şöyle. Z karakteri ile başlamayan offsetleri anlatıyor
DateTimeFormatter Örüntü Sabitleri yazısına taşıdım.
constructor
Örnek
Şöyle yaparız.
Parametre olarak TemporalAccessor tipi alır. Yani DayOfWeek, HijrahDate, HijrahEra, Instant, IsoEra, JapaneseDate, JapaneseEra, LocalDate, LocalDateTime, LocalTime, MinguoDate, MinguoEra, Month, MonthDay, OffsetDateTime, OffsetTime, ThaiBuddhistDate, ThaiBuddhistEra, Year, YearMonth, ZonedDateTime, ZoneOffset gibi bir sürü sınıfı formatlayabilir.
Örnek
Şöyle yaparız.
Şu formatta çıktı verir. Ancak unutulmaması gerek şey aslında bu formattaki en kısa çıktıyı verir. Yani SSS alanı 00 ise çıktıya dahil etmz.
Şöyle yaparız.
RFC_1123_DATE_TIME Alanı
Örnek
Şöyle yaparız.
ofLocalizedX metodu
Şu satırı dahil ederiz.
import java.time.format.DateTimeFormatter;
constructorBu sınıfı kurmak için
1.DateTimeFormatterBuilder sınıfı kullanılabilir.
2. DateTimeFormatter.ofPattern() metodu kullanılabilir.
parse işlemi
1. Bu sınıfın kendi parse metodu kullanılabilir veya
2. Bu sınıfın nesnesi LocalDate.parse(), ZonedDateTime.parse (), OffsetDateTime.part() metoduna parametre olarak geçilebilir.
- Eğer birinci yöntem kullanılırsa DateTimeFormatter.parse() metodunun ikinci parametresi çıktı olaran hangi nesneyi istediğimizi belirtir.
- Eğer ikinci yöntem kullanılırsa zaten LocalDate.parse() zaten yine LocalDateTime nesnesi döndürür.
format işlemi
1. Bu sınıfın kendi format metodu kullanılabilir veya
2. Bu sınıfın nenesi LocateDateTime.format(), LocateDate.format() metoduna parametre olarak geçilebilir.
Her iki kullanımda da bir String elde deriz.
Sabit Alanlar
Soru şöyle. Z karakteri ile başlamayan offsetleri anlatıyor
On Wikipedia time zone offsets are explained as the difference in hours and minutes from standard UTC time. However, DateTimeFormatter supports zone-offset pattern XXXXX, which "outputs the hour and minute and optional second, with a colon, such as '+01:30:15'."Cevabı şöyle.
Are offsets like +01:30:15 ISO valid? If not, based on which standard does Java define such offsets?
It's not supported by ISO-8601, but it is a valid offset as recorded in the IANA time zone database.Sabitler
Sub-minute offsets are common in the data for the late 19th and early 20th century, before time zones were properly standardized. For example, Europe/Paris had an offset of +00:09:21 until 1911 (according to the IANA database).
The latest occurrence I can find for this is Africa/Monrovia which had a sub-minute offset until 1972!
DateTimeFormatter Örüntü Sabitleri yazısına taşıdım.
constructor
Örnek
Şöyle yaparız.
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("YYYYww")
.parseDefaulting(WeekFields.ISO.dayOfWeek(), 1)
.toFormatter();
LocalDate parse = LocalDate.parse("201803", formatter);
Çıktı olarak şunu alırız.2018-01-15
format metodu - TemporalAccessorParametre olarak TemporalAccessor tipi alır. Yani DayOfWeek, HijrahDate, HijrahEra, Instant, IsoEra, JapaneseDate, JapaneseEra, LocalDate, LocalDateTime, LocalTime, MinguoDate, MinguoEra, Month, MonthDay, OffsetDateTime, OffsetTime, ThaiBuddhistDate, ThaiBuddhistEra, Year, YearMonth, ZonedDateTime, ZoneOffset gibi bir sürü sınıfı formatlayabilir.
Örnek
Şöyle yaparız.
DateTimeFormatter inputFormatter = DateTimeFormatter
.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
DateTimeFormatter outputFormatter = DateTimeFormatter
.ofPattern("dd-MM-yyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse("2018-04-10T04:00:00.000Z", inputFormatter);
String formattedDate = outputFormatter.format(date);
System.out.println(formattedDate); // prints 10-04-2018
ISO_LOCAL_DATE_TIME AlanıŞu formatta çıktı verir. Ancak unutulmaması gerek şey aslında bu formattaki en kısa çıktıyı verir. Yani SSS alanı 00 ise çıktıya dahil etmz.
Örnekyyyy-MM-ddThh:mm:ss.SSS
Şöyle yaparız.
long time = System.currentTimeMillis();
ISO_LOCAL_DATE_TIME.format(Instant.ofEpochMilli(time).atZone(ZoneOffset.UTC))
Çıktı olarak şunu alırız.// "2017-03-07T12:09:04.374"
Örnek
Elimizde şöyle bir kod olsun. Burada en kısa çıktıyı verdiği görülebilir.
public static void main(String[] args) {
DateTimeFormatter isoDtf = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
List <LocalDateTime> times =
Arrays.asList(LocalDateTime.now(),
LocalDateTime.parse("2020-09-13T20:53", isoDtf),
LocalDateTime.parse(LocalDateTime.now().format(isoDtf)));
// and explicitly output the formatter LocalDateTime
for (LocalDateTime time: times)
System.out.println("Time: "+ time.format(isoDtf));
}
Çıktı olarak şunu alırız
Time: 2020-09-15T15:12:55.592
Time: 2020-09-13T20:53:00
Time: 2020-09-15T15:12:55.623
Örnek
Şöyle yaparız.
String lastUpdatedString = "Wed, 25 Mar 2020 08:00:00 +0200";
OffsetDateTime dateTime = OffsetDateTime
.parse(lastUpdatedString, DateTimeFormatter.RFC_1123_DATE_TIME);
System.out.println(dateTime);
Çıktı olarak "2020-03-25T08:00+02:00" alırızofLocalizedX metodu
Örnek
Şöyle yaparız
var date = LocalDate.of(2022,Month.JANUARY,1);
var time = LocalTime.of(2,3,4,5);
var datetime = LocalDateTime.of(d, t);
date.format(DateTimeFormatter.ISO_LOCAL_DATE);
// 2022-01-01
time.format(DateTimeFormatter.ISO_LOCAL_TIME));
// 02:03:04.000000005
datetime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
// 2022-01-01T02:03:04.000000005
var f1 = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
datetime.format(f1)); // 01-01-2022 02:03:04
var f2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
f2.format(date); // 1/1/22
f2.format(time)); // Error
f2.format(datetime));// 1/1/22
var f3 = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);
f3.format(date); // Error
f3.format(time); // 2:03 AM
f3.format(datetime); // 2:03 AM
var f4 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
f4.format(date); // Error
f4.format(time); // Error
f4.format(datetime); // 1/1/22, 2:03 AM
ofPattern metodu - StringÖrnek
Şöyle yaparız.
DateTimeFormatter fmt= DateTimeFormatter.ofPattern("dd/MM/yyyy");
ÖrnekŞöyle yaparız.
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
ÖrnekŞöyle yaparız
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm a");
LocalTime localTime = LocalTime.parse("10:45 pm", formatter);
ofPattern metodu - String + LocaleŞöyle yaparız.
DateTimeFormatter inputFormatter = DateTimeFormatter
.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
parse metodu - String + TemporalQueryTemporalAccessor tipi döner. Yani DayOfWeek, HijrahDate, HijrahEra, Instant, IsoEra, JapaneseDate, JapaneseEra, LocalDate, LocalDateTime, LocalTime, MinguoDate, MinguoEra, Month, MonthDay, OffsetDateTime, OffsetTime, ThaiBuddhistDate, ThaiBuddhistEra, Year, YearMonth, ZonedDateTime, ZoneOffset gibi bir sürü sınıfı parse edebilir.
Şöyle yaparız.
ZonedDateTime zdt = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ").
parse("2015-01-12T05:00:00.000+0000", ZonedDateTime::from
);
ÖrnekElimzde şu değerler olsun.
String format = "uuuuMM";
String value = "201712";
Şöyle yaparız.DateTimeFormatter.ofPattern(format).withResolverStyle(ResolverStyle.STRICT)
.parse(value, YearMonth::from);
withChronology metoduŞöyle yaparız.
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter
.ofPattern("uuuu-MM-dd")
.withChronology(IsoChronology.INSTANCE)
.withResolverStyle(ResolverStyle.STRICT);
withResolverStyle metoduŞöyle yaparız.
DateTimeFormatter fmt = ...;
DateTimeFormatter fmt = fmt.
withResolverStyle (ResolverStyle.STRICT);
withZone metoduŞöyle yaparız.
ZoneId zoneID = ...;
DateTimeFormatter fmt = ...;
DateTimeFormatter fmt = fmt.withZone(zoneID
);
Hiç yorum yok:
Yorum Gönder