JavaRush /Java Blog /Random-ID /Bagaimana tidak tersesat dalam waktu - DateTime dan Kalen...

Bagaimana tidak tersesat dalam waktu - DateTime dan Kalender

Dipublikasikan di grup Random-ID
Halo! Hari ini kita akan mulai bekerja dengan tipe data baru yang belum pernah kita temui sebelumnya, yaitu tanggal. Bagaimana tidak tersesat dalam waktu - DateTime dan Kalender - 1Saya rasa tidak perlu menjelaskan apa itu tanggal :) Pada prinsipnya, sangat mungkin untuk menulis tanggal dan waktu saat ini di Java dalam string biasa.
public class Main {
   public static void main(String[] args) {

       String date = "June 11, 2018";
       System.out.println(date);
   }
}
Namun pendekatan ini mempunyai banyak kelemahan. Kelas Stringdibuat untuk bekerja dengan teks, dan memiliki metode yang sesuai. Jika kita perlu mengatur tanggalnya (misalnya menambahkan 2 jam), itu Stringtidak akan berfungsi di sini. Atau, misalnya, menampilkan tanggal dan waktu saat ini pada saat program dikompilasi ke dalam konsol. Ini juga tidak akan membantu di sini String: saat Anda menulis kode dan menjalankannya, waktu akan berubah dan hal-hal yang tidak relevan akan ditampilkan di konsol. Oleh karena itu, di Java, penciptanya menyediakan beberapa kelas untuk bekerja dengan tanggal dan waktu. Yang pertama adalah kelasjava.util.Date

Kelas Tanggal Jawa

Kami memberinya nama lengkap karena ada juga kelas di paket lain di Java java.sql.Date. Jangan bingung! Hal pertama yang perlu Anda ketahui adalah ia menyimpan tanggal dalam milidetik yang telah berlalu sejak 1 Januari 1970. Bahkan ada nama tersendiri untuk tanggal ini - "Waktu Unix".Cara yang cukup menarik, setujukah Anda? :) Hal kedua yang perlu diingat: jika Anda membuat objek Datedengan konstruktor kosong, hasilnya adalah tanggal dan waktu saat objek tersebut dibuat . StringApakah Anda ingat bagaimana kami menulis bahwa tugas seperti itu akan menjadi masalah untuk format tanggal ? Kelas Datemenyelesaikannya dengan mudah.
public class Main {
   public static void main(String[] args) {

       Date date = new Date();
       System.out.println(date);
   }
}
Jalankan kode ini beberapa kali dan Anda akan melihat bagaimana waktu akan berubah setiap kali :) Hal ini dimungkinkan karena disimpan dalam milidetik: ini adalah satuan waktu terkecil, itulah sebabnya hasilnya sangat akurat. Ada konstruktor lain untuk Date: Anda dapat menentukan jumlah pasti milidetik yang telah berlalu dari 00:00 tanggal 1 Januari 1970 hingga tanggal yang diperlukan, dan itu akan dibuat:
public class Main {
   public static void main(String[] args) {

       Date date = new Date(1212121212121L);
       System.out.println(date);
   }
}
Keluaran konsol:

Fri May 30 08:20:12 MSD 2008
Kami mendapatkannya pada tanggal 30 Mei 2008. "Jumat" berarti hari dalam seminggu - "Jumat" (Jumat), dan MSD - "Moscow Daylight Saving" (waktu musim panas Moskow). Milidetik ditransmisikan dalam format long, karena jumlahnya sering kali tidak sesuai dengan int. Jadi, operasi tanggal seperti apa yang mungkin kita perlukan dalam pekerjaan kita? Nah, yang paling kentara tentu saja adalah perbandingan . Tentukan apakah suatu tanggal lebih lambat atau lebih awal dari tanggal lainnya. Hal ini dapat dilakukan dengan berbagai cara. Misalnya, Anda dapat memanggil metode . Date.getTime(), yang akan mengembalikan jumlah milidetik yang telah berlalu sejak tengah malam pada tanggal 1 Januari 1970. Mari kita panggil saja dua objek Date dan bandingkan satu sama lain:
public class Main {
   public static void main(String[] args) {

       Date date1 = new Date();

       Date date2 = new Date();

       System.out.println((date1.getTime() > date2.getTime())?
               "date1 is later than date2" : "date1 is earlier than date2");
   }
}
Kesimpulan:

date1 раньше date2
Namun ada cara yang lebih mudah, yaitu menggunakan metode khusus dari kelas Date: before(), after()dan equals(). Mereka semua mengembalikan hasilnya boolean. Metode ini before()memeriksa apakah tanggal kita lebih awal dari tanggal yang kita berikan sebagai argumen:
public class Main {
   public static void main(String[] args) throws InterruptedException {

       Date date1 = new Date();

       Thread.sleep(2000);//pause the program for 2 seconds
       Date date2 = new Date();

       System.out.println(date1.before(date2));
   }
}
Keluaran konsol:

true
Metode ini bekerja dengan cara yang sama after(); ia memeriksa apakah tanggal kita lebih lambat dari tanggal yang kita berikan sebagai argumen:
public class Main {
   public static void main(String[] args) throws InterruptedException {

       Date date1 = new Date();

       Thread.sleep(2000);//pause the program for 2 seconds
       Date date2 = new Date();

       System.out.println(date1.after(date2));
   }
}
Keluaran konsol:

false
Dalam contoh kami, kami menidurkan program selama 2 detik sehingga kedua tanggal tersebut dijamin berbeda. Pada komputer yang cepat, waktu antara pembuatan date1dan date2dapat kurang dari satu milidetik, dalam hal ini keduanya dan before()dan after()akan kembali false. Tapi metode equals()dalam situasi seperti ini akan kembali true! Lagi pula, ini membandingkan jumlah milidetik yang telah berlalu sejak pukul 00:00 tanggal 1 Januari 1970 untuk setiap tanggal. Objek hanya akan dianggap sama jika cocok hingga milidetik:
public static void main(String[] args) {

   Date date1 = new Date();
   Date date2 = new Date();

   System.out.println(date1.getTime());
   System.out.println(date2.getTime());

   System.out.println(date1.equals(date2));
}
Inilah hal lain yang perlu Anda perhatikan. Jika Anda membuka dokumentasi untuk kelas tersebut Datedi situs web Oracle, Anda akan melihat bahwa banyak metode dan konstruktornya telah ditetapkan sebagai Deprecated(“usang”). Di sini, lihat: Tanggal Kelas Inilah yang dikatakan oleh pembuat Java sendiri tentang bagian-bagian kelas yang sudah tidak digunakan lagi: “Elemen program yang dianotasi dengan @Deprecated adalah sesuatu yang tidak disarankan untuk digunakan oleh pemrogram, biasanya karena berbahaya, atau karena itu ada alternatif yang lebih baik.” Namun bukan berarti cara-cara tersebut tidak bisa digunakan sama sekali. Selain itu, jika Anda sendiri yang mencoba menjalankan kode menggunakan kode tersebut di IDEA, kemungkinan besar akan berhasil.Mari kita ambil contoh metode yang tidak digunakan lagi Date.getHours(), yang mengembalikan jumlah jam dari suatu objek Date.
public static void main(String[] args) {

   Date date1 = new Date();

   System.out.println(date1.getHours());

}
Jika pada saat Anda menjalankan kode, misalnya, waktu menunjukkan 14:21, maka akan muncul angka 14. Seperti yang Anda lihat, metode yang tidak digunakan lagi dicoret, tetapi berfungsi dengan baik. Metode-metode ini tidak dihapus sepenuhnya, agar tidak merusak sekumpulan kode yang sudah ditulis menggunakan metode tersebut. Artinya, metode ini tidak “rusak” atau “dihapus”, metode ini tidak direkomendasikan untuk digunakan karena tersedianya alternatif yang lebih nyaman. Omong-omong, hal ini tertulis tepat di dokumentasi: Bagaimana tidak tersesat dalam waktu - DateTime dan Kalender - 2Sebagian besar metode kelas Date telah dipindahkan ke versi yang lebih baik dan diperluas - kelas Calendar. Kita akan mengenalnya lebih jauh :)

Kalender Jawa

Java 1.1 memperkenalkan kelas baru - Calendar. Dia membuat pengerjaan kurma di Java sedikit lebih mudah dibandingkan sebelumnya. Satu-satunya implementasi kelas Calendaryang akan kami gunakan adalah kelas GregorianCalendar(ini menerapkan kalender Gregorian, yang menurut sebagian besar negara di dunia hidup). Kenyamanan utamanya adalah dapat bekerja dengan tanggal dalam format yang lebih nyaman. Misalnya, dia dapat:
  • Tambahkan bulan atau hari ke tanggal saat ini
  • Periksa apakah tahun tersebut merupakan tahun kabisat;
  • Dapatkan masing-masing komponen tanggal (misalnya, dapatkan nomor bulan dari keseluruhan tanggal)
  • Dan juga, sistem konstanta yang sangat nyaman telah dikembangkan di dalamnya (kita akan melihat banyak di antaranya di bawah).
Perbedaan penting lainnya dari kelas ini Calendaradalah bahwa ia menerapkan konstanta Calendar.Era: Anda dapat mengatur tanggal ke era SM (“Sebelum Kristus” - sebelum kelahiran Kristus, yaitu “sebelum zaman kita”) atau AC (“Setelah Kristus” - “ zaman kita"). Mari kita lihat semua ini dengan contoh. Mari kita buat kalender dengan tanggal 25 Januari 2017:
public static void main(String[] args) {

  Calendar calendar = new GregorianCalendar(2017, 0 , 25);
}
Bulan di kelas Calendar(seperti Datepada ) dimulai dari nol, jadi kami meneruskan angka 0 sebagai argumen kedua. Hal utama ketika bekerja dengan kelas Calendaradalah memahami bahwa ini adalah kalender , dan bukan tanggal terpisah. Bagaimana tidak tersesat dalam waktu - DateTime dan Kalender - 3Tanggal hanyalah serangkaian angka yang mewakili periode waktu tertentu. Dan kalender adalah keseluruhan perangkat yang dengannya Anda dapat melakukan banyak hal dengan tanggal :) Ini dapat dilihat dengan jelas jika Anda mencoba mengeluarkan objek Kalender ke konsol: Output:

java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=10800000,dstSavings=0,useDaylight=false,transitions=79,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=?,YEAR=2017,MONTH=0,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=25,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
Lihat berapa banyak informasi yang ada! Kalender memiliki banyak properti yang tidak dimiliki tanggal biasa, dan semuanya di-output ke konsol (begitulah cara kerja metode toString()di kelas Calendar). Jika saat bekerja Anda hanya perlu mendapatkan tanggal sederhana dari kalender, mis. objek Date- ini dilakukan dengan menggunakan metode Calendar.getTime()(namanya bukan yang paling logis, tetapi tidak ada yang bisa dilakukan):
public static void main(String[] args) {

   Calendar calendar = new GregorianCalendar(2017, 0 , 25);
   Date date = calendar.getTime();
   System.out.println(date);
}
Kesimpulan:

Wed Jan 25 00:00:00 MSK 2017
Sekarang kami telah “menyederhanakan” kalender menjadi tanggal biasa. Mari kita lanjutkan. Selain simbol numerik untuk bulan, Calendarkonstanta dapat digunakan di kelas. Konstanta adalah bidang statis suatu kelas Calendardengan nilai yang sudah ditetapkan dan tidak dapat diubah. Opsi ini sebenarnya lebih baik karena meningkatkan keterbacaan kode.
public static void main(String[] args) {
   GregorianCalendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
}
Calendar.JANUARY— salah satu konstanta untuk menunjukkan bulan. Dengan pilihan penamaan ini, tidak akan ada yang lupa, misalnya, bahwa angka “3” berarti April, dan bukan bulan ketiga yang biasa kita gunakan - Maret. Anda tinggal menulis Calendar.APRIL- dan itu saja :) Semua bidang kalender (hari, bulan, menit, detik, dll.) dapat diatur satu per satu menggunakan metode ini set(). Ini sangat mudah, karena Calendarsetiap bidang memiliki konstanta sendiri di kelasnya, dan kode akhir akan terlihat sesederhana mungkin. Misalnya, pada contoh sebelumnya, kita membuat tanggal, namun tidak menetapkan waktu saat ini untuk tanggal tersebut. Mari kita atur waktunya menjadi 19:42:12
public static void main(String[] args) {
   Calendar calendar = new GregorianCalendar();
   calendar.set(Calendar.YEAR, 2017);
   calendar.set(Calendar.MONTH, 0);
   calendar.set(Calendar.DAY_OF_MONTH, 25);
   calendar.set(Calendar.HOUR_OF_DAY, 19);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   System.out.println(calendar.getTime());
}
Kesimpulan:

Wed Jan 25 19:42:12 MSK 2017
Kita memanggil metode ini set(), memberikan konstanta padanya (tergantung pada bidang yang ingin kita ubah) dan nilai baru untuk bidang ini. Ternyata metode tersebut set()adalah semacam “super-setter” yang bisa menetapkan nilai bukan untuk satu field, tapi untuk banyak field :) Penjumlahan dan pengurangan nilai dalam suatu kelas Calendardilakukan dengan menggunakan metode add(). Anda harus memasukkan bidang yang ingin Anda ubah, dan angkanya - berapa banyak yang ingin Anda tambahkan/kurangi dari nilai saat ini. Sebagai contoh, mari kita atur tanggal yang kita buat kembali ke 2 bulan yang lalu:
public static void main(String[] args) {
   Calendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 19);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   calendar.add(Calendar.MONTH, -2);//to subtract a value - a negative number must be passed to the method
   System.out.println(calendar.getTime());
}
Kesimpulan:

Fri Nov 25 19:42:12 MSK 2016
Besar! Kami telah menetapkan tanggal kembali ke 2 bulan yang lalu. Alhasil, tidak hanya bulannya saja yang berubah, tahun 2017 menjadi 2016. Perhitungan tahun berjalan dengan perpindahan tanggal tentunya dilakukan secara otomatis dan tidak perlu dikontrol secara manual. Namun jika karena tujuan tertentu Anda perlu menonaktifkan perilaku ini, Anda dapat melakukannya. Metode khusus roll()dapat menambah dan mengurangi nilai tanpa mempengaruhi nilai lainnya. Misalnya seperti ini:
public static void main(String[] args) {
   Calendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 10);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   calendar.roll(Calendar.MONTH, -2);
   System.out.println(calendar.getTime());
}
Kami melakukan hal yang persis sama seperti pada contoh sebelumnya - kami mengurangi 2 bulan dari tanggal saat ini. Namun sekarang kodenya bekerja secara berbeda: bulannya berubah dari Januari ke November, namun tahunnya tetap sama seperti 2017! Kesimpulan:

Sat Nov 25 10:42:12 MSK 2017
Lebih jauh. Seperti yang kami katakan di atas, semua bidang suatu objek Calendardapat diperoleh secara terpisah. Metode ini bertanggung jawab untuk ini get():
public static void main(String[] args) {
   GregorianCalendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 10);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   System.out.println("Year: " + calendar.get(Calendar.YEAR));
   System.out.println("Month: " + calendar.get(Calendar.MONTH));
   System.out.println("Number of the week in the month: " + calendar.get(Calendar.WEEK_OF_MONTH));// serial number of the week in the month

   System.out.println("Number: " + calendar.get(Calendar.DAY_OF_MONTH));

   System.out.println("Watch: " + calendar.get(Calendar.HOUR));
   System.out.println("Minutes: " + calendar.get(Calendar.MINUTE));
   System.out.println("Seconds: " + calendar.get(Calendar.SECOND));
   System.out.println("Milliseconds: " + calendar.get(Calendar.MILLISECOND));

}
Kesimpulan:

Год: 2017 
Месяц: 0 
Порядковый номер недели в месяце: 4 
Число: 25 
Часы: 10 
Минуты: 42 
Секунды: 12 
Миллисекунды: 0
Artinya, selain “super-setter” di kelas Calendarjuga ada “super-getter” :) Hal menarik lainnya tentu saja bekerja dengan era. Untuk membuat tanggal “BC” Anda perlu menggunakan field Calendar.Era Misalnya, mari kita buat tanggal yang menunjukkan Pertempuran Cannae, di mana Hannibal mengalahkan tentara Roma. Ini terjadi pada tanggal 2 Agustus 216 SM. e.:
public static void main(String[] args) {
   GregorianCalendar cannes = new GregorianCalendar(216, Calendar.AUGUST, 2);
   cannes.set(Calendar.ERA, GregorianCalendar.BC);

   DateFormat df = new SimpleDateFormat("dd MMM yyy GG");
   System.out.println(df.format(cannes.getTime()));
}
Di sini kami menggunakan kelas SimpleDateFormatuntuk menampilkan tanggal dalam format yang lebih mudah kami pahami (huruf “GG” bertanggung jawab untuk menampilkan era). Kesimpulan:

02 авг 216 до н.э.
CalendarMasih banyak lagi metode dan konstanta di kelas , baca tentangnya di dokumentasi:

Mengonversi string menjadi Tanggal

Untuk mengonversi String ke Tanggal, Anda dapat menggunakan kelas pembantu Java - SimpleDateFormat . Ini adalah kelas yang Anda perlukan untuk mengonversi tanggal ke format yang Anda tentukan. Bagaimana tidak tersesat dalam waktu - DateTime dan Kalender - 5Pada gilirannya, ini sangat mirip dengan DateFormat . Satu-satunya perbedaan penting antara keduanya adalah SimpleDateFormat dapat digunakan untuk memformat (mengonversi tanggal menjadi string) dan menguraikan string menjadi tanggal yang sadar lokal, sedangkan DateFormat tidak mendukung lokal. Selain itu, DateFormat adalah kelas abstrak yang menyediakan dukungan dasar untuk memformat dan mengurai tanggal, sedangkan SimpleDateFormat adalah kelas konkret yang memperluas kelas DateFormat. Ini adalah contoh pembuatan objek SimpleDateFormat dan memformat Tanggal:
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(1212121212121L);

System.out.println(formatter.format(date));
Pada contoh di atas kita menggunakan pola "yyyy-MM-dd HH:mm:ss" yang artinya:
  • 4 digit tahun (yyyy);
  • 2 digit untuk bulan (MM);
  • 2 digit untuk hari (dd);
  • 2 digit jam dalam format 24 jam (HH);
  • 2 digit menit (mm);
  • 2 digit untuk detik (ss).
Tanda pemisah dan urutan simbol pola dipertahankan. Keluaran konsol:
2008-05-30 08:20:12
Ada cukup banyak template surat untuk kelas SimpleDateFormat . Agar Anda tidak bingung, kami telah mengumpulkannya dalam sebuah tabel:
Simbol Keterangan Contoh
G era (dalam lokalisasi bahasa Inggris - AD dan SM) IKLAN
kamu tahun (angka 4 digit) 2020
Y y tahun (2 digit terakhir) 20
yyyy tahun (angka 4 digit) 2020
M nomor bulan (tanpa angka nol di depan) 8
MM nomor bulan (dengan nol di depan jika nomor bulan < 10) 04
MM singkatan bulan tiga huruf (menurut lokalisasi) Januari
MMMM nama bulan penuh Juni
w minggu dalam setahun (tanpa angka nol di depan) 4
ww minggu dalam setahun (dengan angka nol di depan) 04
W minggu dalam bulan (tanpa angka nol di depan) 3
WW minggu dalam bulan (dengan awalan nol) 03
D hari dalam setahun 67
D hari dalam sebulan (tanpa angka nol di depan) 9
DD hari dalam sebulan (dengan angka nol di depannya) 09
F hari dalam seminggu dalam sebulan (tanpa angka nol di depan) 9
FF hari dalam seminggu dalam bulan (dengan nol di depan) 09
E hari dalam seminggu (singkatan) W
EEEE hari dalam seminggu (penuh) Jumat
kamu nomor hari dalam seminggu (tanpa angka nol di depan) 5
kamu nomor hari dalam seminggu (dengan nol di depan) 05
A Penanda AM/PM SAYA.
H jam dalam format 24 jam tanpa angka nol di depannya 6
HH jam dalam format 24 jam dengan nol di depannya 06
k jumlah jam dalam format 24 jam 18
K jumlah jam dalam format 12 jam 6
H waktu dalam format 12 jam tanpa angka nol di depan 6
hh waktu dalam format 12 jam dengan nol di depannya 06
M menit tanpa angka nol di depannya 32
mm menit dengan nol di depannya 32
S detik tanpa angka nol di depannya sebelas
ss detik dengan nol di depannya sebelas
S milidetik 297
z Zona waktu Eet
Z zona waktu dalam format RFC 822 300
Contoh kombinasi karakter pola:
Sampel Contoh
hh-MM-tttt 11-01-2020
yyyy-MM-dd 01-10-2019
HH:mm:ss.SSS 23:59.59.999
yyyy-MM-dd JJ:mm:ss 30-11-2018 03:09:02
yyyy-MM-dd JJ:mm:ss.SSS 01-03-2016 01:20:47.999
yyyy-MM-dd JJ:mm:ss.SSS Z 13-13-2013 23:59:59.999 +0100
Jika Anda membuat sedikit kesalahan dengan formatnya, Anda bisa menjadi pemilik java.text.ParseException, dan ini bukan pencapaian yang menyenangkan. Baiklah, perjalanan singkat ke SimpleDateFormat telah selesai - mari kembali ke terjemahan string java ke tanggal . SimpleDateFormat memberi kami kemampuan seperti itu, dan kami akan menjalani proses ini langkah demi langkah.
  1. Buat baris dari mana Anda perlu mengatur tanggal:

    String strDate = "Sat, April 4, 2020";
  2. Kita membuat objek SimpleDateFormat baru dengan templat yang cocok dengan apa yang kita miliki di string (jika tidak, kita tidak akan dapat menguraikannya):

    SimpleDateFormat formatter = new SimpleDateFormat("EEE, MMMM d, yyyy", Locale.ENGLISH);

    Seperti yang Anda lihat, kami memiliki argumen Lokal di sini. Jika kita hilangkan, maka akan menggunakan Lokal default, yang tidak selalu bahasa Inggris.

    Jika lokal tidak cocok dengan string masukan, maka data string yang terikat ke bahasa tersebut, seperti milik kita Mon atau April , tidak akan dikenali dan akan memunculkan java.text.ParseException, meskipun polanya cocok.

    Namun, kita tidak perlu menentukan formatnya jika kita menggunakan template yang tidak spesifik bahasa. Sebagai contoh - yyyy-MM-dd HH:mm:ss

  3. Kami membuat tanggal menggunakan formatter, yang kemudian mem-parsingnya dari string input:

    try {
      Date date = formatter.parse(strDate);
      System.out.println(date);
    }
    catch (ParseException e) {
      e.printStackTrace();
    }

    Keluaran konsol:

    
    Sat Apr 04 00:00:00 EEST 2020

    Hmm... Tapi formatnya sudah tidak sama lagi!

    Untuk membuat format yang sama, kita menggunakan formatter lagi:

    System.out.println(formatter.format(date));

    Keluaran konsol:

    
    Sat, April 4, 2020

SimpleDateFormat dan Kalender

SimpleDateFormat memungkinkan Anda memformat semua objek Tanggal dan Kalender yang Anda buat untuk digunakan nanti. Mari kita pertimbangkan hal menarik seperti bekerja dengan era. Untuk membuat tanggal “BC”, Anda perlu menggunakan kolom Calendar.Era. Misalnya, mari kita buat tanggal yang menunjukkan Pertempuran Cannae, di mana Hannibal mengalahkan tentara Roma. Ini terjadi pada tanggal 2 Agustus 216 SM. e.:
public static void main(String[] args) {
   GregorianCalendar cannes = new GregorianCalendar(216, Calendar.AUGUST, 2);
   cannes.set(Calendar.ERA, GregorianCalendar.BC);

   DateFormat df = new SimpleDateFormat("dd MMM yyy GG");
   System.out.println(df.format(cannes.getTime()));
}
Di sini kami menggunakan kelas SimpleDateFormat untuk menampilkan tanggal dalam format yang lebih mudah kami pahami (seperti yang ditunjukkan di atas, huruf “GG” bertanggung jawab untuk menampilkan era). Kesimpulan:

02 авг 216 до н.э.

Format Tanggal Jawa

Ini kasus lainnya. Anggaplah format tanggal ini tidak cocok untuk kita:

Sat Nov 25 10:42:12 MSK 2017
Jadi begini. Dengan menggunakan kemampuan kami dalam format tanggal java, Anda dapat mengubahnya sesuai keinginan Anda tanpa banyak kesulitan:
public static void main(String[] args) {

   SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE, d MMMM yyyy");
   Calendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 10);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   calendar.roll(Calendar.MONTH, -2);
   System.out.println(dateFormat.format(calendar.getTime()));
}
Kesimpulan:

суббота, 25 Ноябрь 2017
Jauh lebih baik, bukan? :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION