Java.text.SimpleDateFormat sınıfı, kendi belirlediğiniz bir biçimlendirme modeline göre tarihleri hem ayrıştırmak hem de biçimlendirmek için kullanılır. Tarihleri ayrıştırırken, Java SimpleDateFormat genellikle tarihi bir Java dizesinden ayrıştırır. Tarihleri biçimlendirirken, SimpleDateFormat tipik olarak bir Date nesnesini bir String olarak biçimlendirir, ancak tarihi bir StringBuffer olarak da biçimlendirebilir.
Bu yazı, tarihleri biçimlendirmek için SimpleDateFormat sınıfının nasıl kullanılacağını açıklamaktadır.
SimpleDateFormat Oluşturma
Aşağıdaki şekilde basit bir şekilde SimpleDateFormat nesnesi oluşturulur.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.text.*; import java.util.*; //tasarimkodlama.com class Main { public static void main(String[] args) { String pattern = "yyyy-MM-dd"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); } } |
SimpleDateFormat kurucusuna iletilen pattern parametresi, tarihlerin ayrıştırılması ve biçimlendirilmesi için kullanılacak desendir. Pattern söz dizimi bu metnin ilerleyen kısımlarında ele alınacaktır. Pattern sadece normal bir Java dizesidir.
Tarihleri Biçimlendirme
SimpleDateFormat örneğini oluşturduktan sonra, format() yöntemini kullanarak tarihleri formatlayabilirsiniz.
İşte bir örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.text.*; import java.util.*; //tasarimkodlama.com class Main { public static void main(String[] args) { String pattern = "yyyy-MM-dd"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); String date = simpleDateFormat.format(new Date()); System.out.println(date); } } |
Format () yöntemine iletilen Date örneği, bir java.util.Date örneğidir.
Yukarıdaki SimpleDateFormat örneğinden yazdırılan çıktı şöyle olacaktır:
1 2 3 |
2021-04-18 |
Biçimlendirilmiş tarih dizesinin yıl, ardından ay, ardından gün ile nasıl başladığına dikkat edin. Tarih alanlarının sırası, SimpleDateFormat yapıcısına iletilen tarih desenine göre belirlenir. Daha önce bahsedildiği gibi, bu format biraz sonra bu Java SimpleDateFormat eğitiminde açıklanacaktır.
Tarih Ayrıştırma
SimpleDateFormat örneğinin parse() yöntemini kullanarak bir String öğesini java.util.Date örneğine ayrıştırabilirsiniz.
İşte bir örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.text.*; import java.util.*; //tasarimkodlama.com class Main { public static void main(String[] args) { String pattern = "yyyy-MM-dd"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); try{ Date tarih = simpleDateFormat.parse("2020-09-09"); System.out.println(tarih); } catch(Exception e) { } } } |
Çıktı: Program çıktısı çalıştığında aşağıdaki gibi bir tarih biçimi elde etmiş oluruz.
1 2 3 |
Wed Sep 09 00:00:00 UTC 2020 |
Belirli Bir Yerel Ayar İçin Basit Tarih Biçimi Oluşturma
Belirli bir Java Yerel Ayarını hedefleyen bir SimpleDateFormat örneği oluşturabilirsiniz. Bunu yapmak, tarihleri uygun olduğunda bu Yerel Ayara göre biçimlendirecektir.
Örneğin, haftanın gününün adını içeren bir biçimlendirme deseni, haftanın gününü verilen Yerel Ayarın dilinde yazacaktır. İşte bir örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.text.*; import java.util.*; //tasarimkodlama.com class Main { public static void main(String[] args) { String pattern = "yyyy-MM-dd"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, new Locale("tr", "TR")); try{ Date tarih = simpleDateFormat.parse("2020-09-09"); System.out.println(tarih); } catch(Exception e) { } } } |
Desen Sözdizimi
Biçimlendirme deseninizde aşağıdaki sembolleri kullanabilirsiniz:
Desen Harfi | Tarih ve Zaman | Örnek |
---|---|---|
G | Çağ belirleyici | AD |
y | Yıl | 2018(yyyy),18(yy) |
M | Yıl içindeki ay | July(MMMM), Jul(MMM), 07(MM) |
w | Yılda hafta | 16 |
W | Hafta bazında | 3 |
D | Yıldaki gün sayısını verir | 266 |
d | Aydaki gün sayısını verir. | 09(dd), 9(d) |
F | Ay olarak haftanın günü | 4 |
E | Haftanın gün adı | Tuesday, Tue |
u | 1’in Pazartesi’yi, 2’nin Salı’yı temsil ettiği haftanın gün sayısı | 2 |
a | AM yada PM | AM |
H | Günün saati(0-23) | 12 |
k | Günün saati (1-24) | 23 |
K | 12 saat biçimi için am / pm cinsinden saat(0-11) | 0 |
h | 12 saat biçimi için am / pm cinsinden saat (1-12) | 12 |
m | Saatteki dakika | 59 |
s | Dakikada saniye | 35 |
S | Dakikada milisaniye | 978 |
z | Timezone | Pacific Standard Time; PST; GMT-08:00 |
Z | Saat cinsinden saat dilimi farkı (RFC düzeni) | -0800 |
X | ISO biçiminde saat dilimi uzaklığı | -08; -0800; -08:00 |
Bunların dışındaki karakterler, kalıba ve dolayısıyla biçimlendirilmiş tarihlere eklenecek normal metin olarak değerlendirilecektir.
Bazı karakterler farklı sayılarda kullanılabilir. Örneğin, yılın 2 karakterlik bir versiyonu için yy yazabilirsiniz (örn. 12) veya yılın 4 karakterli versiyonu için yyyy yazabilirsiniz (örn. 2012). Kabul edilen kalıplar hakkında daha fazla bilgi için SimpleDateFormat sınıfı için JavaDoc’a bakın.
Desen Örnekleri
İşte birkaç Java SimpleDateFormat tarih kalıbı örneği:
1 2 3 4 5 6 7 8 9 10 11 |
Desen Örnek dd-MM-yy 31-01-12 dd-MM-yyyy 31-01-2012 MM-dd-yyyy 01-31-2012 yyyy-MM-dd 2012-01-31 yyyy-MM-dd HH:mm:ss 2012-01-31 23:59:59 yyyy-MM-dd HH:mm:ss.SSS 2012-01-31 23:59:59.999 yyyy-MM-dd HH:mm:ss.SSSZ 2012-01-31 23:59:59.999+0100 EEEEE MMMMM yyyy HH:mm:ss.SSSZ Saturday November 2012 10:45:42.720+0100 |
DateFormatSymbols
Biçimlendirilmiş çıktıda kullanılan tarih sembollerini belirli bir Yerel Ayar için özelleştirmek mümkündür. Bunu bir java.text.DateFormatSymbols örneği kullanarak yaparsınız. İşte bir örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.text.*; import java.util.*; //tasarimkodlama.com class Main { public static void main(String[] args) { Locale locale = new Locale("tr", "TR"); DateFormatSymbols dateFormatSymbols = new DateFormatSymbols(locale); dateFormatSymbols.setWeekdays(new String[]{ "Yok", "Pz Pazar", "Pts Pazartesi", "Sl Salı", "Çr Çarşamba", "Pr Perşembe", "Cm Cuma", "Cts Cumartesi", }); String pattern = "EEEEE MMMMM yyyy"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, dateFormatSymbols); String date = simpleDateFormat.format(new Date()); System.out.println(date); } } |
Çıktı:
1 2 3 |
Pz Pazar Nisan 2021 |
Özel hafta günü adının nasıl kullanıldığına dikkat edin.
DateFormatSymbols örneğinde daha fazla tarih formatlama sembolü ayarlayabilirsiniz. Ek semboller ayarlamak için kullanabileceğiniz yöntemler şunlardır:
1 2 3 4 5 6 7 8 9 10 |
dateFormatSymbols.setWeekdays(); dateFormatSymbols.setAmPmStrings(); dateFormatSymbols.setEras(); dateFormatSymbols.setLocalPatternChars(); dateFormatSymbols.setMonths(); dateFormatSymbols.setShortMonths(); dateFormatSymbols.setShortWeekdays(); dateFormatSymbols.setZoneStrings(); |
Kaynak:
https://docs.oracle.com/javase/8/docs/api/java/text/DateFormatSymbols.html
https://www.codota.com/code/java/classes/java.text.DateFormatSymbols
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
http://tutorials.jenkov.com/java-internationalization/simpledateformat.html
Yorum Yap