Java Dersleri 15)TARİH-ZAMAN[ÇEVİRİ]

WinnerMan

Uzman üye
31 Mar 2012
1,324
0
Eskişehir
Java, java.util paketinin içinde Date sınıfını bulundurur, bu sınıf şimdiki tarih ve zamanı sarmalar.(Öğrenmemize olanak sağlar kısaca)

Date sınıfı aşağıda da gösterildiği gibi 2 tane yapıcı metotu destekler.
Date() Bu yapıcı, objeyi şimdiki tarih ve zamanla yükler.
Date(long millisec) Bu yapıcı, 1 Ocak 1970'den beri geçmiş olan milisaniye olan millisec argümanını alır.

Aşağıda date sınıfının metotları verilmiştir:
boolean after(Date date)
boolean before(Date date)
Object clone()
int compareTo(Date date)
int compareTo(Object obj)
boolean equals(Object date)
long getTime()
int hashCode()
v oid setTime(long Time)
String toString()


Güncel Tarih ve Zamanı Alma:

Javada şimdiki zamanı almak çok kolaydır.Basit olarak Date objesini kullanabilirsiniz.Aşağıda örnek verilmiştir:
import java.util.Date;

public class DateDemo {
public static v oid main(String args[]) {
// Instantiate a Date object
Date date = new Date();

// display time and date using toString()
System.out.println(date.toString());
}
}


Sonuç:
on May 04 09:51:52 CDT 2009

Tarih Karşılaştırması:

2 tarihi karşılaştırmak için takip edilebilecek 3 yol aşağıda belirtilmiştir:
-getTime() metodu ile 1 Ocak 1970'den itibaren geçen zaman milisaniye cinsinden alınır ve iki değer karşılaştırılır.
-before() ve after() metotları ve equals() metodu kullanılır.
-compareTo() metodu kullanılabilir.

SimpleDateFormat Kullanarak Tarih Formatı:

SimpleDateFormat , tarihleri formatlama ve parse etmek için kullanılır.SimpleDataFormat tarih-zaman formatlaması için kullanıcı tanımlı seçimler yapmanızı destekler.Örnek olarak:

import java.util.*;
import java.text.*;

public class DateDemo {
public static v oid main(String args[]) {

Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

System.out.println("Current Date: " + ft.format(dNow));
}
}


Sonuç:
Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

Basit DateFormat Format Kodları:

Zaman formatını belirlemek için, zaman şablonu stringleri kullanışır.Bu şablonda, tüm ASCII karakterleri şablon karakteri olarak rezerve edilmiştir.Aşağıda bu karakterler belirtilmiştir:
Karakter Tanım Örnek
G Çağ tasarımcısı AD
y 4 basamakta Yıllar 2001
M Yıldaki aylar July veya 07
d Aydaki Günler 10
h A.M/P.M Saatler 12
H Gündeki Saat(0-23) 22
m Saatteki Dakika 30
s Dakikadaki saniye 55
S Milisaniye 234
E Haftadaki Günler Tuesday
D Yıldaki Günler 360
F Aydaki, haftanın günler 2(ikinci salı)
w Yıldaki haftalar 40
W Aydaki Haftalar 1
a A.M/P.M notlayıcı PM
k Gündeki Saat(1-24) 10
z Zaman Topluluğu Eastern Standart Time
' Metin için Kaçış Delimiter
" Tekil alıntı

printf Kullanarak Tarih Formatı:

Tarih ve zaman formatlama, printf' kullanarak çok kolay bir şekilde yapılabilir.2 harf kullanarak, "t" ile karakter sonlandırılır.Bu şekilde çok karmaşık oldu.
Aşağıdaki örneği inceleyin:
import java.util.Date;

public class DateDemo {

public static v oid main(String args[]) {
// Instantiate a Date object
Date date = new Date();

// display time and date using toString()
String str = String.format("Current Date/Time : %tc", date );

System.out.printf(str);
}
}


Sonuç:
Current Date/Time : Sat Dec 15 16:37:57 MST 2012

Her bölümü tek tek formatlama zor olabilir.

Aşağıda daha basit şekliyle bunu yapmanın yolu örnekle anlatılmıştır:
import java.util.Date;

public class DateDemo {

public static v oid main(String args[]) {
// Instantiate a Date object
Date date = new Date();

// display time and date using toString()
System.out.printf("%1$s %2$tB %2$td, %2$tY",
"Due date:", date);
}
}


Sonuç:
Due date: February 09, 2004

Alternatif olarak, "<" bayrağı kullanılabilir.Formatlama argümanıyla aynı şeyi belirtir.
Örnek olarak:
import java.util.Date;

public class DateDemo {

public static v oid main(String args[]) {
// Instantiate a Date object
Date date = new Date();

// display formatted date
System.out.printf("%s %tB %<te, %<tY",
"Due date:", date);
}
}


Sonuç:
Due date: February 09, 2004

Tarih ve Zaman Dönüşüm Karakterleri:

Karakter Tanım Örnek
c Tam tarih-zaman Mon May 04 09:51:52 CDT 2009
F ISO 8601 tarih 2004-02-09
D U.S formatlı zaman 02/09/2004
T 24 saat zaman 18:05:19
r 12 saat zaman 06:05:19 pm
R 24 saa, saniyesiz 18:05
Y 4 basamak yıl 2004
y Son 2 basamak 04
C İlk 2 basamak 20
B Ay adı February
b Kısa ay adı Feb
m 2 basamak ay 02
d 2 basamak gün 03
e 2 basamak gün 9
A Tam hafta adı Monday
a Kısa hafta adı Mon
j 3 basamak yıl 069
H 2 basamak saat 18
k 2 basamak saat 18
I 2 basamak saat 06
l 2 basamak saat 6
M 2 basamak dakika 05
S 2 basamak saniye 18
L 3 basamak milisaniye 047
N 9 basamak nanosaniye 047000000
P Zaman notlayıcısı(büyük)PM
p Zaman notlayıcısı(küçük)pm
z RFC 822 sayısal format offseti -0800
Z Zaman zone PST
s 1-1-1970'den beri saniye1078884319
Q O tarihten beri milisaniyeler1078884319047

Tarih ve zamanla ilgili bir çok kullanışlı sınıf var.Daha fazla detay için Java Standart Documantetion'a bakın.

Stringleri Tarihe Parse Etme(Ayrıştırma):

SimpleDateFormat sınıfı bir kaç bağımlı metota sahiptir.Özellikle parse() metodu.
Bununla ilgili örnek:
import java.util.*;
import java.text.*;

public class DateDemo {

public static v oid main(String args[]) {
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd");

String input = args.length == 0 ? "1818-11-11" : args[0];

System.out.print(input + " Parses as ");

Date t;

try {
t = ft.parse(input);
System.out.println(t);
} catch (ParseException e) {
System.out.println("Unparseable using " + ft);
}
}
}


Sonuç:
$ java DateDemo
1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818
$ java DateDemo 2007-12-01
2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007


Bir Süre Uyutma:

Zamanın herhangi bir periyodunda milisaniyelerle uyuyabilirsiniz.Örnek olarak, aşağıdaki kod, programı 10 saniye uyutur:
import java.util.*;

public class SleepDemo {
public static v oid main(String args[]) {
try {
System.out.println(new Date( ) + "\n");
Thread.sleep(5*60*10);
System.out.println(new Date( ) + "\n");
} catch (Exception e) {
System.out.println("Got an exception!");
}
}
}


Sonuç:
Sun May 03 18:04:41 GMT 2009

Sun May 03 18:04:51 GMT 2009


Geçen Zamanı Ölçme:


Bazen, o noktaya kadar ne kadar zaman geçtiğiniz bilmemiz gerekir.Hadi aşağıdaki koda bakalım:
import java.util.*;

public class DiffDemo {

public static v oid main(String args[]) {
try {
long start = System.currentTimeMillis( );
System.out.println(new Date( ) + "\n");
Thread.sleep(5*60*10);
System.out.println(new Date( ) + "\n");
long end = System.currentTimeMillis( );
long diff = end - start;
System.out.println("Difference is : " + diff);
} catch (Exception e) {
System.out.println("Got an exception!");
}
}
}


Sonuç:
Sun May 03 18:16:51 GMT 2009

Sun May 03 18:16:57 GMT 2009

Difference is : 5993


GregorianCalendar Sınıfı:

Not:Bu miladi takvim olabilir.Tam çevirisini bulamadım.Bazı yerlerde gregor takvimi diye geçiyor.

Bu sınıfın direk metotlarını verip bitirmek istiyorum.Aşağıda tüm metotlarını açıkladım:
Ayrıca getInstance() metodu şimdiki zaman ve tarih ile yüklenmiş bir GregorianCalendar döndürür.

Metotlar ve Açıklamaları:

GregorianCalendar()
Şimdiki zamanı kullanarak default GregorianCalender oluşturur.

GregorianCalendar(int year, int month, int date)

Verilen set ile bir GregorianCalender nesnesi oluşturur.

GregorianCalendar(int year, int month, int date, int hour, int minute)
GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
GregorianCalendar(Locale aLocale)
GregorianCalendar(TimeZone zone)
GregorianCalendar(TimeZone zone, Locale aLocale)


Aşağıda bir kaç kullanışlı metot verilmiştir, ayrıntılar için google'ı ziyaret edin:
v oid add(int field, int amount)
protected v oid computeFields()
protected v oid computeTime()
boolean equals(Object obj)
int get(int field)
int getActualMaximum(int field)
int getActualMinimum(int field)
int getGreatestMinimum(int field)
Date getGregorianChange()
int getLeastMaximum(int field)
int getMaximum(int field)
Date getTime()
long getTimeInMillis()
TimeZone getTimeZone()
int getMinimum(int field)
int hashCode()
boolean isLeapYear(int year)
v oid roll(int field, boolean up)
v oid set(int field, int value)
v oid set(int year, int month, int date)
v oid set(int year, int month, int date, int hour, int minute)
v oid set(int year, int month, int date, int hour, int minute, int second)
v oid setGregorianChange(Date date)
v oid setTime(Date date)
v oid setTimeInMillis(long millis)
v oid setTimeZone(TimeZone value)
String toString()


ÖRNEK:
import java.util.*;

public class GregorianCalendarDemo {

public static v oid main(String args[]) {
String months[] = {
"Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"};

int year;
// Create a Gregorian calendar initialized
// with the current date and time in the
// default locale and timezone.
GregorianCalendar gcalendar = new GregorianCalendar();
// Display current time and date information.
System.out.print("Date: ");
System.out.print(months[gcalendar.get(Calendar.MONTH)]);
System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
System.out.println(year = gcalendar.get(Calendar.YEAR));
System.out.print("Time: ");
System.out.print(gcalendar.get(Calendar.HOUR) + ":");
System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
System.out.println(gcalendar.get(Calendar.SECOND));

// Test if the current year is a leap year
if(gcalendar.isLeapYear(year)) {
System.out.println("The current year is a leap year");
}
else {
System.out.println("The current year is not a leap year");
}
}
}


Sonuç:
Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year


Birkaç denemeden sonra, daha ilerisi için, standart Java dökümantasyonuna bakın.



Not: Çevirilerin hepsi benimdir.Aralarda değiştirme, ekleme yapılmıştır.Benden izinsiz kopyalanması ve başka bir yerde yayınlanması durumunda hakkımı helal etmiyorum!
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.