15 Kasım 2017 Çarşamba

SimpleDateFormat Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.text.SimpleDateFormat;
SimpleDateFormat hem saat dilimi, hem de locale formatı bilgisine sahiptir. Bu sınıf abstract olan DateFormat sınıfından kalıtır. Şu satırı dahil ederiz.
import java.text.DateFormat;
Bu sınıf yerine Java 8 ile gelen DateTimeFormatter kullanılırsa daha iyi.

Pattern
a : AM/PM
yyyy : Yıl
Y: Week year. Bu ne demek bilmiyorum
MM : Ay
dd : Gün
HH : 24 saat
mm : Dakika
ss : Saniye
SSS : Milisaniye

constructor - Pattern
Şöyle yaparız.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
2. Tek tırnak içindeki karakterler
Belirtilen karakterler dikkate alınmaz. Genelde tarih ile ilgili olmayan gereksiz kısımlar süzmek için kullanılır.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss");
Date date = format.parse("2016.02.05 AD at 23:59:30");
constructor - Pattern + Locale
Format yanında Locale kullanılabilir. Şöyle yaparız.

SimpleDateFormat sdf = new SimpleDateFormat("...", Locale.US);
Şöyle yaparız
SimpleDateFormat sdf = new SimpleDateFormat("...", Locale.ENGLISH);
Şöyle yaparız
SimpleDateFormat sdf = new SimpleDateFormat("...",Locale.getDefault());
format metodu - Date
Belirtilen Date nesnesini string'e çevirir. Şöyle yaparız.
DateFormat sdf = new SimpleDateFormat("...");
Date date = new Date();
sdft.format (date);
Sadece gün-ay-yılı göstermek için şöyle yaparız.
Date date = ...;
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
sdf.format (date);
Sadece saati göstermek için şöyle yaparız.
Date date = ...;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.format (date);
AM/PM için şöyle yaparız.
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String str = sdf.format(date);
Calendar ile çalışmak için şöyle yaparız.
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
dff.format (c.getTime());
getDateInstance metodu
Şöyle yaparız.
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
Ya da belli bir locale veririz.
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.GERMANY);
parse metodu
Belirtilen string'i tekrar Date nesnesine çevirir. ParseException atabilir. Şu satırı dahil ederiz.
import java.text.ParseException;
Şöyle yaparız.
String myDob= "16/01/1989";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = null;
try {
  date = sdf.parse (myDob);
} catch (ParseException e) {
  // handle exception here !
}
setLenient metodu
Şöyle yaparız.
format.setLenient (false);
setTimeZone metodu
Bu sınıf setTimeZone () metodu çağrılmadan yaratılırsa JVM'in default time zone bilgisi ile ilklenir. Dolayısıyla farklı makinelerde farklı sonuçlar elde edebiliriz.

parse edilecek saat, sistem saat diliminden farklı ise önce saat dilimini atarız.
sdf.setTimeZone (TimeZone.getTimeZone("America/New_York"));
GMT'ye göre formatlamak için şöyle yaparız.
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/hh-mm z");
sdf.setTimeZone (TimeZone.getTimeZone("GMT"));
UTC'ye göre formalamak için şöyle yaparız.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
sdf.setTimeZone (TimeZone.getTimeZone("UTC"));
Daha sonra string'i parse ederiz.
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
isoFormat.setTimeZone (TimeZone.getTimeZone("UTC"));
Date date = isoFormat.parse ("2010-05-23T09:01:02");
toPattern
İmzası şöyle
public String toPattern()
Açıklaması şöyle
Returns a pattern string describing this date format.
Şöyle yaparız.
SimpleDateFormat df = ...;
SimpleDateFormat df2 = new SimpleDateFormat(df.toPattern().replace("yy", "yyyy"));

Hiç yorum yok:

Yorum Gönder