Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Menguasai Tanggal dan Waktu Java: Konstruktor, Metode & Praktik Terbaik

Java menyediakan kelas Date yang tersedia dalam paket java.util, kelas ini mengenkapsulasi tanggal dan waktu saat ini.

Kelas Date mendukung dua konstruktor seperti yang ditunjukkan dalam tabel berikut.

Sr.No. Constructor & Description
1

Date( )

Konstruktor ini menginisialisasi objek dengan tanggal dan waktu saat ini.

2

Date(long millisec)

Konstruktor ini menerima argumen yang sama dengan jumlah milidetik yang telah berlalu sejak tengah malam, 1 Januari 1970.

Berikut adalah metode dari kelas date.

Sr.No. Method & Description
1

boolean after(Date date)

Mengembalikan true jika objek Date yang memanggil berisi tanggal yang lebih dari yang ditentukan oleh date, jika tidak, mengembalikan false.

2

boolean before(Date date)

Mengembalikan true jika objek Date yang memanggil berisi tanggal yang lebih awal dari yang ditentukan oleh date, jika tidak, mengembalikan false.

3

Object clone( )

Menduplikasi objek Date yang memanggil.

4

int compareTo(Date date)

Membandingkan nilai objek yang memanggil dengan date. Mengembalikan 0 jika nilai sama. Mengembalikan nilai negatif jika objek yang memanggil lebih awal dari date. Mengembalikan nilai positif jika objek yang memanggil lebih dari date.

5

int compareTo(Object obj)

Bekerja sama dengan compareTo(Date) jika obj adalah class Date. Jika tidak, ia melempar ClassCastException.

6

boolean equals(Object date)

Mengembalikan true jika objek Date yang memanggil berisi waktu dan tanggal yang sama dengan yang ditentukan oleh date, jika tidak, mengembalikan false.

7

long getTime( )

Mengembalikan jumlah milidetik yang telah berlalu sejak 1 Januari 1970.

8

int hashCode( )

Mengembalikan kode hash untuk objek yang memanggil.

9

void setTime(long time)

Mengatur waktu dan tanggal seperti yang ditentukan oleh time, yang mewakili waktu yang berlalu dalam milidetik dari tengah malam, 1 Januari 1970.

10

String toString( )

Mengonversi objek Date yang memanggil menjadi string dan mengembalikan hasilnya.

Mendapatkan Tanggal dan Waktu Saat Ini

Ini adalah metode yang sangat mudah untuk mendapatkan tanggal dan waktu saat ini dalam Java. Anda dapat menggunakan objek Date sederhana dengan metode toString() untuk mencetak tanggal dan waktu saat ini sebagai berikut −

Contoh

Live Demo
 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()); } } 

Ini akan menghasilkan hasil berikut −

Output

 on May 04 09:51:52 CDT 2009 

Perbandingan Tanggal

Berikut adalah tiga cara untuk membandingkan dua tanggal −

Pemformatan Tanggal Menggunakan SimpleDateFormat

SimpleDateFormat adalah kelas konkret untuk memformat dan mem-parsing tanggal dengan cara yang sensitif terhadap locale. SimpleDateFormat memungkinkan Anda untuk memulai dengan memilih pola apa pun yang ditentukan pengguna untuk pemformatan tanggal-waktu.

Contoh

Live Demo
 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)); } } 

Ini akan menghasilkan hasil berikut −

Output

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

Kode Format SimpleDateFormat

Untuk menentukan format waktu, gunakan string pola waktu. Dalam pola ini, semua huruf ASCII dicadangkan sebagai huruf pola, yang didefinisikan sebagai berikut −

Character Description Example
G Era designator AD
y Year in four digits 2001
M Month in year July or 07
d Day in month 10
h Hour in A.M./P.M. (1~12) 12
H Hour in day (0~23) 22
m Minute in hour 30
s Second in minute 55
S Millisecond 234
E Day in week Tuesday
D Day in year 360
F Day of week in month 2 (second Wed. in July)
w Week in year 40
W Week in month 1
a A.M./P.M. marker PM
k Hour in day (1~24) 24
K Hour in A.M./P.M. (0~11) 10
z Time zone Eastern Standard Time
' Escape for text Delimiter
" Single quote `

Pemformatan Tanggal Menggunakan printf

Pemformatan tanggal dan waktu dapat dilakukan dengan sangat mudah menggunakan metode printf. Anda menggunakan format dua huruf, dimulai dengan t dan diakhiri dengan salah satu huruf dalam tabel seperti yang ditunjukkan dalam kode berikut.

Contoh

Live Demo
 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); } } 

Ini akan menghasilkan hasil berikut −

Output

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

Sampol akan agak konyol jika Anda harus menyediakan tanggal beberapa kali untuk memformat setiap bagian. Untuk alasan itu, string format dapat menunjukkan indeks argumen yang akan diformat.

Indeks harus segera mengikuti % dan harus diakhiri dengan $.

Contoh

Live Demo
 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); } } 

Ini akan menghasilkan hasil berikut −

Output

 Due date: February 09, 2004 

Alternatifnya, Anda dapat menggunakan flag <. Ini menunjukkan bahwa argumen yang sama seperti dalam spesifikasi format sebelumnya harus digunakan lagi.

Contoh

Live Demo
 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); } } 

Ini akan menghasilkan hasil berikut −

Output

 Due date: February 09, 2004 

Karakter Konversi Tanggal dan Waktu

Character Description Example
c Complete date and time Mon May 04 09:51:52 CDT 2009
F ISO 8601 date 2004-02-09
D U.S. formatted date (month/day/year) 02/09/2004
T 24-hour time 18:05:19
r 12-hour time 06:05:19 pm
R 24-hour time, no seconds 18:05
Y Four-digit year (with leading zeroes) 2004
y Last two digits of the year (with leading zeroes) 04
C First two digits of the year (with leading zeroes) 20
B Full month name February
b Abbreviated month name Feb
m Two-digit month (with leading zeroes) 02
d Two-digit day (with leading zeroes) 03
e Two-digit day (without leading zeroes) 9
A Full weekday name Monday
a Abbreviated weekday name Mon
j Three-digit day of year (with leading zeroes) 069
H Two-digit hour (with leading zeroes), between 00 and 23 18
k Two-digit hour (without leading zeroes), between 0 and 23 18
I Two-digit hour (with leading zeroes), between 01 and 12 06
l Two-digit hour (without leading zeroes), between 1 and 12 6
M Two-digit minutes (with leading zeroes) 05
S Two-digit seconds (with leading zeroes) 19
L Three-digit milliseconds (with leading zeroes) 047
N Nine-digit nanoseconds (with leading zeroes) 047000000
P Uppercase morning or afternoon marker PM
p Lowercase morning or afternoon marker pm
z RFC 822 numeric offset from GMT -0800
Z Time zone PST
s Seconds since 1970-01-01 00:00:00 GMT 1078884319
Q Milliseconds since 1970-01-01 00:00:00 GMT 1078884319047

Ada kelas lain yang berguna terkait dengan Tanggal dan waktu. Untuk detail lebih lanjut, Anda dapat merujuk ke dokumentasi standar Java.

Mengurai String menjadi Tanggal

Kelas SimpleDateFormat memiliki beberapa metode tambahan, yang đáng diperhatikan parse( ), yang mencoba mem-parsing string sesuai dengan format yang disimpan dalam objek SimpleDateFormat yang diberikan.

Contoh

Live Demo
 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); } } } 

Sebuah contoh eksekusi program di atas akan menghasilkan hasil berikut −

Output

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

Tidur untuk Beberapa saat

Anda dapat tidur untuk periode waktu apa pun dari satu milidetik hingga umur komputer Anda. Misalnya, program berikut akan tidur selama 3 detik −

Contoh

Live Demo
 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!"); } } } 

Ini akan menghasilkan hasil berikut −

Output

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

Mengukur Waktu yang Berlalu

Kadang-kadang, Anda mungkin perlu mengukur titik waktu dalam milidetik. Jadi mari kita tulis ulang contoh di atas sekali lagi −

Contoh

Live Demo
 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!"); } } } 

Ini akan menghasilkan hasil berikut −

Output

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

Kelas GregorianCalendar

GregorianCalendar adalah implementasi konkret dari kelas Calendar yang menerapkan kalender Gregorian normal yang Anda kenal. Kami tidak membahas kelas Calendar dalam tutorial ini, Anda dapat mencari dokumentasi standar Java untuk ini.

Metode getInstance( ) dari Calendar mengembalikan GregorianCalendar yang diinisialisasi dengan tanggal dan waktu saat ini di locale default dan zona waktu. GregorianCalendar mendefinisikan dua bidang: AD dan BC. Ini mewakili dua era yang didefinisikan oleh kalender Gregorian.

Ada juga beberapa konstruktor untuk objek GregorianCalendar −

Sr.No. Constructor & Description
1

GregorianCalendar()

Membangun GregorianCalendar default menggunakan waktu saat ini di zona waktu default dengan locale default.

2

GregorianCalendar(int year, int month, int date)

Membangun GregorianCalendar dengan tanggal yang ditentukan diatur di zona waktu default dengan locale default.

3

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

Membangun GregorianCalendar dengan tanggal dan waktu yang ditentukan diatur untuk zona waktu default dengan locale default.

4

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

Membangun GregorianCalendar dengan tanggal dan waktu yang ditentukan diatur untuk zona waktu default dengan locale default.

5

GregorianCalendar(Locale aLocale)

Membangun GregorianCalendar berdasarkan waktu saat ini di zona waktu default dengan locale yang diberikan.

6

GregorianCalendar(TimeZone zone)

Membangun GregorianCalendar berdasarkan waktu saat ini di zona waktu yang diberikan dengan locale default.

7

GregorianCalendar(TimeZone zone, Locale aLocale)

Membangun GregorianCalendar berdasarkan waktu saat ini di zona waktu yang diberikan dengan locale yang diberikan.

Berikut adalah daftar beberapa metode pendukung yang disediakan oleh kelas GregorianCalendar −

Sr.No. Method & Description
1

void add(int field, int amount)

Menambahkan jumlah waktu (bertanda) yang ditentukan ke bidang waktu yang diberikan, berdasarkan aturan kalender.

2

protected void computeFields()

Mengonversi UTC dalam milidetik menjadi nilai bidang waktu.

3

protected void computeTime()

Mengganti Calendar Mengonversi nilai bidang waktu menjadi UTC dalam milidetik.

4

boolean equals(Object obj)

Membandingkan GregorianCalendar ini dengan referensi objek.

5

int get(int field)

Mendapatkan nilai untuk bidang waktu tertentu.

6

int getActualMaximum(int field)

Mengembalikan nilai maksimum yang dapat dimiliki bidang ini, dengan tanggal saat ini.

7

int getActualMinimum(int field)

Mengembalikan nilai minimum yang dapat dimiliki bidang ini, dengan tanggal saat ini.

8

int getGreatestMinimum(int field)

Mengembalikan nilai minimum tertinggi untuk bidang yang diberikan jika bervariasi.

9

Date getGregorianChange()

Mendapatkan tanggal perubahan Kalender Gregorian.

10

int getLeastMaximum(int field)

Mengembalikan nilai maksimum terendah untuk bidang yang diberikan jika bervariasi.

11

int getMaximum(int field)

Mengembalikan nilai maksimum untuk bidang yang diberikan.

12

Date getTime()

Mendapatkan waktu saat ini kalender ini.

13

long getTimeInMillis()

Mendapatkan waktu saat ini kalender ini sebagai long.

14

TimeZone getTimeZone()

Mendapatkan zona waktu.

15

int getMinimum(int field)

Mengembalikan nilai minimum untuk bidang yang diberikan.

16

int hashCode()

Mengganti hashCode.

17

boolean isLeapYear(int year)

Menentukan apakah tahun yang diberikan adalah tahun kabisat.

18

void roll(int field, boolean up)

Menambahkan atau mengurangi (naik/turun) satu unit waktu pada bidang waktu yang diberikan tanpa mengubah bidang yang lebih besar.

19

void set(int field, int value)

Mengatur bidang waktu dengan nilai yang diberikan.

20

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

Mengatur nilai untuk bidang tahun, bulan, dan tanggal.

21

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

Mengatur nilai untuk bidang tahun, bulan, tanggal, jam, dan menit.

22

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

Mengatur nilai untuk bidang tahun, bulan, tanggal, jam, menit, dan detik.

23

void setGregorianChange(Date date)

Mengatur tanggal perubahan GregorianCalendar.

24

void setTime(Date date)

Mengatur waktu saat ini kalender ini dengan Date yang diberikan.

25

void setTimeInMillis(long millis)

Mengatur waktu saat ini kalender ini dari nilai long yang diberikan.

26

void setTimeZone(TimeZone value)

Mengatur zona waktu dengan nilai zona waktu yang diberikan.

27

String toString()

Mengembalikan representasi string dari kalender ini.

Contoh

Live Demo
 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"); } } } 

Ini akan menghasilkan hasil berikut −

Output

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

Untuk daftar lengkap konstanta yang tersedia dalam kelas Calendar, Anda dapat merujuk ke dokumentasi standar Java.


java

  1. Kelas dan Objek C#: Fondasi untuk OOP yang Kuat
  2. Mengambil Tanggal dan Waktu Saat Ini di Python: Panduan Praktis
  3. Variabel dan Literal Java: Panduan Lengkap
  4. Memahami Ekspresi, Pernyataan, dan Blok Java
  5. Kelas dan Objek Java: Panduan Praktis
  6. Kelas dan Metode Abstrak Java: Panduan Lengkap
  7. Menguasai Kelas Bersarang dan Kelas Dalam Java: Jenis, Contoh, dan Praktik Terbaik
  8. Pola Singleton Java Dijelaskan: Cara Menerapkan dan Menggunakannya dengan Aman
  9. Java throw vs throws: Menguasai Penanganan Pengecualian dengan Contoh Praktis
  10. Mahir Java Autoboxing dan Unboxing: Contoh Praktis dan Best Practices