Java - Tarih ve Saat

Java, Date sınıf mevcut java.util paket, bu sınıf geçerli tarih ve saati kapsar.

Date sınıfı, aşağıdaki tabloda gösterildiği gibi iki yapıcıyı destekler.

Sr.No. Oluşturucu ve Açıklama
1

Date( )

Bu yapıcı, nesneyi geçerli tarih ve saatle başlatır.

2

Date(long millisec)

Bu kurucu, 1 Ocak 1970 gece yarısından bu yana geçen milisaniye sayısına eşit olan bir argümanı kabul eder.

Tarih sınıfının yöntemleri aşağıdadır.

Sr.No. Yöntem ve Açıklama
1

boolean after(Date date)

Çağrılan Date nesnesi tarihe göre belirtilenden daha sonraki bir tarih içeriyorsa true, aksi takdirde false döndürür.

2

boolean before(Date date)

Çağrılan Date nesnesi, tarihe göre belirtilenden daha eski bir tarih içeriyorsa true, aksi takdirde false döndürür.

3

Object clone( )

Çağrılan Date nesnesini çoğaltır.

4

int compareTo(Date date)

Çağrılan nesnenin değerini tarihin değeriyle karşılaştırır. Değerler eşitse 0 döndürür. Çağrılan nesne tarihten önceyse negatif bir değer döndürür. Çağrılan nesne tarihten sonraysa pozitif bir değer döndürür.

5

int compareTo(Object obj)

Obj, Date sınıfındaysa, ComparTo (Date) ile aynı şekilde çalışır. Aksi takdirde, bir ClassCastException oluşturur.

6

boolean equals(Object date)

Çağrılan Date nesnesi, tarihe göre belirtilenle aynı saat ve tarihi içeriyorsa, doğru, aksi takdirde yanlış döndürür.

7

long getTime( )

1 Ocak 1970'ten bu yana geçen milisaniye sayısını döndürür.

8

int hashCode( )

Çağrılan nesne için bir karma kod döndürür.

9

void setTime(long time)

Saati ve tarihi, 1 Ocak 1970 gece yarısından milisaniye cinsinden geçen zamanı temsil eden, zamana göre belirtilen şekilde ayarlar.

10

String toString( )

Çağrılan Date nesnesini bir dizeye dönüştürür ve sonucu döndürür.

Güncel Tarih ve Saati Alma

Bu, Java'da güncel tarih ve saati almanın çok kolay bir yöntemidir. Geçerli tarih ve saati aşağıdaki gibi yazdırmak için toString () yöntemiyle basit bir Date nesnesi kullanabilirsiniz -

Misal

import java.util.Date;
public class DateDemo {

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

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

Bu, aşağıdaki sonucu verecektir -

Çıktı

on May 04 09:51:52 CDT 2009

Tarih Karşılaştırması

İki tarihi karşılaştırmanın üç yolu aşağıdadır -

  • Her iki nesne için 1 Ocak 1970 gece yarısından bu yana geçen milisaniye sayısını elde etmek ve ardından bu iki değeri karşılaştırmak için getTime () işlevini kullanabilirsiniz.

  • Yöntemleri önce (), sonra () ve eşittir () kullanabilirsiniz. Ayın 12'si 18'den önce geldiğinden, örneğin, yeni Tarih (99, 2, 12) .before (yeni Tarih (99, 2, 18)) true değerini döndürür.

  • Comparable arabirim tarafından tanımlanan ve Date tarafından uygulanan CompareTo () yöntemini kullanabilirsiniz.

SimpleDateFormat Kullanarak Tarih Biçimlendirme

SimpleDateFormat, tarihleri ​​yerel ayara duyarlı bir şekilde biçimlendirmek ve ayrıştırmak için somut bir sınıftır. SimpleDateFormat, tarih-saat biçimlendirmesi için herhangi bir kullanıcı tanımlı kalıp seçerek başlamanıza olanak tanır.

Misal

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

public class DateDemo {

   public static void 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));
   }
}

Bu, aşağıdaki sonucu verecektir -

Çıktı

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

Basit Tarih Biçimi Biçim Kodları

Saat formatını belirtmek için bir zaman modeli dizesi kullanın. Bu modelde, tüm ASCII harfleri aşağıdaki gibi tanımlanan model harfleri olarak ayrılmıştır -

Karakter Açıklama Misal
G Çağ belirleyici AD
y Dört basamaklı yıl 2001
M Yıldaki ay Temmuz veya 07
d Aydaki gün 10
h ÖÖ / ÖS olarak saat (1 ~ 12) 12
H Gün içindeki saat (0 ~ 23) 22
m Saat cinsinden dakika 30
s Dakikada ikinci 55
S Milisaniye 234
E Hafta içi gün Salı
D Yıldaki gün 360
F Ay içinde haftanın günü 2 (Temmuz ayında ikinci Çarşamba)
w Yıldaki hafta 40
W Aydaki hafta 1
a AM / PM işaretçisi ÖS
k Gün içindeki saat (1 ~ 24) 24
K ÖÖ / ÖS olarak saat (0 ~ 11) 10
z Saat dilimi Doğu standart zamanı
' Metin için kaçış Sınırlayıcı
" Tek alıntı '

Printf Kullanarak Tarih Biçimlendirme

Tarih ve saat biçimlendirmesi kullanılarak çok kolay bir şekilde yapılabilir printfyöntem. İki harfli bir biçim kullanıyorsunuz.t ve aşağıdaki kodda gösterildiği gibi tablonun harflerinden biriyle biter.

Misal

import java.util.Date;
public class DateDemo {

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

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

      System.out.printf(str);
   }
}

Bu, aşağıdaki sonucu verecektir -

Çıktı

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

Her bölümü biçimlendirmek için tarihi birden çok kez sağlamanız gerekse biraz aptalca olurdu. Bu nedenle, bir biçim dizesi biçimlendirilecek bağımsız değişkenin dizinini gösterebilir.

Endeks hemen% işaretini takip etmeli ve $ ile sonlandırılmalıdır.

Misal

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display time and date
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

Bu, aşağıdaki sonucu verecektir -

Çıktı

Due date: February 09, 2004

Alternatif olarak, <işaretini de kullanabilirsiniz. Önceki format belirtiminde olduğu gibi aynı argümanın tekrar kullanılması gerektiğini belirtir.

Misal

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display formatted date
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

Bu, aşağıdaki sonucu verecektir -

Çıktı

Due date: February 09, 2004

Tarih ve Saat Dönüştürme Karakterleri

Karakter Açıklama Misal
c Tam tarih ve saat Pazartesi 04 Mayıs 09:51:52 CDT 2009
F ISO 8601 tarihi 2004-02-09
D ABD formatlı tarih (ay / gün / yıl) 02/09/2004
T 24 saatlik zaman 18:05:19
r 12 saatlik zaman 18:05:19
R 24 saatlik zaman, saniye yok 18:05
Y Dört basamaklı yıl (baştaki sıfırlarla) 2004
y Yılın son iki rakamı (başında sıfırlar ile) 04
C Yılın ilk iki rakamı (başında sıfırlar ile) 20
B Tam ay adı Şubat
b Kısaltılmış ay adı Şubat
m İki basamaklı ay (baştaki sıfırlarla) 02
d İki basamaklı gün (baştaki sıfırlarla) 03
e İki basamaklı gün (baştaki sıfırlar olmadan) 9
Bir Tam gün adı Pazartesi
a Kısaltılmış hafta içi adı Pzt
j Yılın üç basamaklı günü (baştaki sıfırlarla) 069
H 00 ile 23 arasında iki basamaklı saat (baştaki sıfırlarla) 18
k İki basamaklı saat (başında sıfır olmadan), 0 ile 23 arasında 18
ben 01 ile 12 arasında iki basamaklı saat (baştaki sıfırlarla) 06
l İki basamaklı saat (başında sıfır olmadan), 1 ile 12 arasında 6
M İki basamaklı dakika (baştaki sıfırlarla) 05
S İki basamaklı saniye (baştaki sıfırlarla) 19
L Üç basamaklı milisaniye (baştaki sıfırlarla) 047
N Dokuz basamaklı nanosaniye (önde gelen sıfırlarla) 047000000
P Büyük sabah veya öğleden sonra işaretçisi ÖS
p Küçük harfli sabah veya öğleden sonra işaretçisi öğleden sonra
z GMT'den RFC 822 sayısal uzaklığı -0800
Z Saat dilimi PST
s 1970-01-01 00:00:00 GMT'den beri geçen saniye sayısı 1078884319
Q 1970-01-01 00:00:00 GMT'den beri geçen milisaniye 1078884319047

Tarih ve saat ile ilgili başka yararlı sınıflar da vardır. Daha fazla ayrıntı için Java Standard belgelerine bakabilirsiniz.

Dizeleri Tarihlere Ayrıştırma

SimpleDateFormat sınıfı, belirli SimpleDateFormat nesnesinde depolanan biçime göre bir dizeyi ayrıştırmaya çalışan parse () gibi bazı ek yöntemlere sahiptir.

Misal

import java.util.*;
import java.text.*;
  
public class DateDemo {

   public static void 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); 
      }
   }
}

Yukarıdaki programın örnek bir çalıştırması aşağıdaki sonucu verecektir -

Çıktı

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Bir süre uyumak

Bir milisaniyeden bilgisayarınızın kullanım ömrüne kadar herhangi bir süre uyuyabilirsiniz. Örneğin, aşağıdaki program 3 saniye uyur -

Misal

import java.util.*;
public class SleepDemo {

   public static void 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!"); 
      }
   }
}

Bu, aşağıdaki sonucu verecektir -

Çıktı

Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009

Geçen Süre Ölçümü

Bazen, milisaniye cinsinden zamandaki noktayı ölçmeniz gerekebilir. Öyleyse yukarıdaki örneği bir kez daha yazalım -

Misal

import java.util.*;
public class DiffDemo {

   public static void 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!");
      }
   }
}

Bu, aşağıdaki sonucu verecektir -

Çıktı

Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993

GregorianCalendar Sınıfı

GregorianCalendar, aşina olduğunuz normal Gregoryen takvimini uygulayan bir Takvim sınıfının somut bir uygulamasıdır. Bu öğreticide Takvim sınıfını tartışmadık, bunun için standart Java belgelerine bakabilirsiniz.

getInstance( )Takvim yöntemi, varsayılan yerel ayarda ve saat diliminde geçerli tarih ve saatle başlatılan bir GregorianCalendar'ı döndürür. GregorianCalendar, iki alanı tanımlar: AD ve BC. Bunlar Gregoryen takvimi tarafından tanımlanan iki dönemi temsil eder.

GregorianCalendar nesneleri için de birkaç yapıcı vardır -

Sr.No. Oluşturucu ve Açıklama
1

GregorianCalendar()

Varsayılan yerel ayara sahip varsayılan saat dilimindeki geçerli saati kullanarak varsayılan bir GregorianCalendar oluşturur.

2

GregorianCalendar(int year, int month, int date)

Varsayılan yerel ayara sahip varsayılan saat diliminde belirlenen tarihe sahip bir GregorianCalendar oluşturur.

3

GregorianCalendar(int year, int month, int date, int hour, int minute)

Varsayılan yerel ayara sahip varsayılan saat dilimi için belirlenen tarih ve saat ayarıyla bir GregorianCalendar oluşturur.

4

GregorianCalendar(int year, int month, int date, int hour, int minute, int second)

Varsayılan yerel ayara sahip varsayılan saat dilimi için belirlenen tarih ve saat ayarıyla bir GregorianCalendar oluşturur.

5

GregorianCalendar(Locale aLocale)

Verilen yerel ayara sahip varsayılan saat dilimindeki geçerli saate göre bir GregorianCalendar oluşturur.

6

GregorianCalendar(TimeZone zone)

Varsayılan yerel ayar ile verilen saat dilimindeki geçerli saate dayalı olarak bir GregorianCalendar oluşturur.

7

GregorianCalendar(TimeZone zone, Locale aLocale)

Bir GregorianCalendar, verilen yerel ayara sahip verilen saat dilimindeki geçerli saate göre oluşturur.

GregorianCalendar sınıfı tarafından sağlanan birkaç yararlı destek yönteminin listesi:

Sr.No. Yöntem ve Açıklama
1

void add(int field, int amount)

Takvimin kurallarına göre, belirtilen (imzalı) süreyi verilen zaman alanına ekler.

2

protected void computeFields()

UTC'yi milisaniye olarak saat alanı değerlerine dönüştürür.

3

protected void computeTime()

Takvimi Geçersiz Kılar Zaman alanı değerlerini milisaniye olarak UTC'ye dönüştürür.

4

boolean equals(Object obj)

Bu GregorianCalendar'ı bir nesne başvurusuyla karşılaştırır.

5

int get(int field)

Belirli bir zaman alanı için değeri alır.

6

int getActualMaximum(int field)

Geçerli tarih verildiğinde, bu alanın sahip olabileceği maksimum değeri döndürür.

7

int getActualMinimum(int field)

Geçerli tarih verildiğinde, bu alanın sahip olabileceği minimum değeri döndürür.

8

int getGreatestMinimum(int field)

Değişirse, verilen alan için en yüksek minimum değeri döndürür.

9

Date getGregorianChange()

Miladi Takvim değişiklik tarihini alır.

10

int getLeastMaximum(int field)

Değişirse, verilen alan için en düşük maksimum değeri döndürür.

11

int getMaximum(int field)

Verilen alan için maksimum değeri döndürür.

12

Date getTime()

Bu Takvimin geçerli saatini alır.

13

long getTimeInMillis()

Bu Takvimin şimdiki zamanını uzun olarak alır.

14

TimeZone getTimeZone()

Saat dilimini alır.

15

int getMinimum(int field)

Verilen alan için minimum değeri döndürür.

16

int hashCode()

HashCode'u geçersiz kılar.

17

boolean isLeapYear(int year)

Verilen yılın artık yıl olup olmadığını belirler.

18

void roll(int field, boolean up)

Verilen zaman alanında, daha büyük alanları değiştirmeden tek bir zaman birimi ekler veya çıkarır (yukarı / aşağı).

19

void set(int field, int value)

Zaman alanını verilen değerle ayarlar.

20

void set(int year, int month, int date)

Yıl, ay ve tarih alanlarının değerlerini ayarlar.

21

void set(int year, int month, int date, int hour, int minute)

Yıl, ay, tarih, saat ve dakika alanlarının değerlerini ayarlar.

22

void set(int year, int month, int date, int hour, int minute, int second)

Yıl, ay, tarih, saat, dakika ve saniye alanlarının değerlerini ayarlar.

23

void setGregorianChange(Date date)

GregorianCalendar değişiklik tarihini ayarlar.

24

void setTime(Date date)

Bu Takvimin geçerli saatini verilen Tarihle ayarlar.

25

void setTimeInMillis(long millis)

Bu Takvimin şimdiki zamanını verilen uzun değerden ayarlar.

26

void setTimeZone(TimeZone value)

Saat dilimini, verilen saat dilimi değeriyle ayarlar.

27

String toString()

Bu takvimin dize gösterimini döndürür.

Misal

import java.util.*;
public class GregorianCalendarDemo {

   public static void 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");
      }
   }
}

Bu, aşağıdaki sonucu verecektir -

Çıktı

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

Takvim sınıfında bulunan sabitlerin tam listesi için standart Java belgelerine bakabilirsiniz.