masa tarikh Java


Pakej java.util menyediakan kelas Tarikh untuk merangkum tarikh dan masa semasa. Kelas Date menyediakan dua pembina untuk membuat instantiate objek Date.

Pembina pertama memulakan objek menggunakan tarikh dan masa semasa.

Date( )

Pembina kedua menerima parameter, iaitu bilangan milisaat sejak 1 Januari 1970.

Date(long millisec)

Selepas objek Date dicipta, anda boleh memanggil kaedah berikut.

Nombor siri               Kaedah dan penerangan
1boolean selepas(Tarikh tarikh)
Jika objek Tarikh yang memanggil kaedah ini mengembalikan benar selepas tarikh yang ditentukan, jika tidak ia mengembalikan palsu.
2boolean sebelum(Tarikh tarikh)
Jika objek Tarikh yang memanggil kaedah ini mengembalikan benar sebelum tarikh yang ditentukan, jika tidak ia mengembalikan palsu.
3Klon objek( )
Mengembalikan salinan objek ini.
4int compareTo(Tarikh tarikh)
Membandingkan objek Tarikh dan tarikh yang ditentukan apabila kaedah ini dipanggil. Apabila kedua-duanya sama, 0 dikembalikan. Jika objek panggilan adalah sebelum tarikh yang ditentukan, nombor negatif dikembalikan. Objek panggilan mengembalikan nombor positif selepas tarikh yang ditentukan.
5int compareTo(Object obj)
Jika obj adalah jenis Tarikh, operasi adalah bersamaan dengan compareTo(Date). Jika tidak ia membuang ClassCastException.
6boolean sama dengan(Tarikh objek)
Mengembalikan benar apabila objek Tarikh memanggil kaedah ini sama dengan tarikh yang ditentukan, jika tidak ia mengembalikan palsu.
7long getTime( )
Mengembalikan bilangan milisaat yang diwakili oleh objek Tarikh ini sejak 1 Januari 1970 00:00:00 GMT.
8int hashCode( )
Mengembalikan nilai kod cincang objek ini.
9kosongkan setMasa(lama)

Tetapkan masa dan tarikh dalam milisaat sejak 1 Januari 1970 00:00:00 GMT.
10String keString( )
Menukar objek Tarikh kepada perwakilan Rentetan dan mengembalikan rentetan.

Mendapatkan tarikh dan masa semasa

Mendapatkan tarikh dan masa semasa dalam Java adalah sangat mudah Gunakan kaedah toString() objek Tarikh untuk mencetak tarikh dan masa semasa, seperti yang ditunjukkan di bawah:

import java.util.Date;
  
public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}

Hasil penyusunan dan larian contoh di atas adalah seperti berikut:

Mon May 04 09:51:52 CDT 2013

Perbandingan tarikh

Java menggunakan tiga kaedah berikut untuk membandingkan dua tarikh:

  • Gunakan kaedah getTime() untuk mendapatkan dua tarikh (bilangan milisaat sejak 1 Januari 1970), dan kemudian bandingkan kedua-dua nilai.

  • Gunakan kaedah sebelum(), selepas() dan sama(). Sebagai contoh, jika 12 haribulan lebih awal daripada 18, maka Tarikh baharu(99, 2, 12).sebelum(Tarikh baharu (99, 2, 18)) kembali benar.

  • Gunakan kaedah compareTo(), yang ditakrifkan oleh antara muka Sebanding, dan kelas Date melaksanakan antara muka ini.


Memformat tarikh menggunakan SimpleDateFormat

SimpleDateFormat ialah kelas untuk memformat dan menghuraikan tarikh dengan cara yang sensitif setempat. SimpleDateFormat membolehkan anda memilih mana-mana format tarikh dan masa yang ditentukan pengguna untuk dijalankan. Contohnya:

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

Hasil penyusunan dan larian contoh di atas adalah seperti berikut:

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

Pengekodan format DateFormat Mudah

Rentetan corak masa digunakan untuk menentukan format masa. Dalam mod ini, semua huruf ASCII dikhaskan sebagai huruf corak, ditakrifkan seperti berikut:

SuratKeteranganContoh
G                 Tanda zaman                 IKLAN
                     y               Tahun empat angka 2001
                        M               Bulan Julai atau 07
                  d               Hari dalam bulan                 10
                  h               A.M./P.M. (1~12) jam format                 12
                  H               Jam dalam sehari (0~23)                 22
                    m               Bilangan minit               30
                  s               Saat                 55
                S                 Bilangan milisaat 234
                  E               Hari dalam seminggu Selasa
                D               Hari dalam setahun                 360
                  F                 Hari dalam minggu                 2 (Rabu kedua pada bulan Julai)
                w               Minggu dalam tahun               40
                  W               Minggu dalam bulan                 1
                  a               A.M./P.M. markah                 PM
                k               Jam dalam sehari (1~24)                            24
                K               A.M./P.M. (0~11) jam format                 10
                  z               Zon waktu               Waktu Standard Timur
' Pembatas teks                 Pembatas
                  "                 Petikan tunggal                 `

Gunakan printf untuk memformat tarikh

Kaedah printf memudahkan untuk memformat masa dan tarikh. Gunakan format dua huruf, yang bermula dengan t dan berakhir dengan huruf daripada jadual di bawah. Contohnya:

import java.util.Date;

public class DateDemo {

  public static void main(String args[]) {
     // 初始化 Date 对象
     Date date = new Date();

     // 使用toString()显示日期和时间
     String str = String.format("Current Date/Time : %tc", date );

     System.out.printf(str);
  }
}

Hasil penyusunan dan larian contoh di atas adalah seperti berikut:

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

Jika anda perlu memberikan tarikh berulang kali , gunakan kaedah ini untuk memformatkannya Setiap bahagiannya sedikit lebih rumit. Oleh itu, rentetan format boleh digunakan untuk menunjukkan indeks parameter yang akan diformatkan.

Indeks mesti mengikut % dan berakhir dengan $. Contohnya:

import java.util.Date;
  
public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用toString()显示日期和时间
       System.out.printf("%1$s %2$tB %2$td, %2$tY", 
                         "Due date:", date);
   }
}

Hasil kompilasi dan larian contoh di atas adalah seperti berikut:

Due date: February 09, 2004

Atau, anda boleh menggunakan < tanda. Ia menunjukkan bahawa parameter yang telah diformatkan sebelum ini akan digunakan semula. Contohnya:

import java.util.Date;
  
public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 显示格式化时间
       System.out.printf("%s %tB %<te, %<tY", 
                         "Due date:", date);
   }
}

Hasil penyusunan dan larian contoh di atas adalah seperti berikut:

Due date: February 09, 2004

Watak Penukaran Tarikh dan Masa

WatakPenerangan Contoh
c                 Tarikh dan masa lengkap                 Isn Mei 04 09:51:52 CDT 2009
F               Tarikh format ISO 8601                 2004-02-09
                     D               Tarikh format A.S. (bulan/hari/tahun)                            02/09/2004
                     T               24 jam                 18:05:19
                   r                 12 jam 06:05:19 petang
R               24 jam, tidak termasuk saat                 18:05
                    Y               Tahun 4 digit (termasuk pendahuluan 0)                 2004
                      y               2 digit terakhir tahun (termasuk pendahuluan 0)                 04
                C               2 digit pertama tahun ini (termasuk pendahuluan 0)                 20
                  B               Nama penuh bulan Februari
                      b                 Singkatan bulan Feb
                     n                 Bulan 2 digit (termasuk pendahuluan 0)                 02
                        d               2 digit hari (termasuk pendahuluan 0)                 03
                        e               2 digit hari (tidak termasuk pendahuluan 0)                   9
                  A               Nama penuh minggu ini                 Isnin
a               Singkatan minggu                 Isnin
                j               Tahun 3 digit (termasuk pendahuluan 0)                 069
                    H               Jam 2 digit (termasuk pendahuluan 0), 00 hingga 23                 18
                  k               Jam 2 digit (tidak termasuk pendahuluan 0), 0 hingga 23                 18
                  Saya               Jam 2 digit (termasuk pendahuluan 0), 01 hingga 12                 06
                  l               Jam 2 digit (tidak termasuk pendahuluan 0), 1 hingga 12                 6
                  M               Minit 2 digit (termasuk pendahuluan 0)                 05
                  S                 2 digit saat (termasuk pendahuluan 0)                   19
                  L               milisaat 3 digit (termasuk pendahuluan 0)                   047
                N               Nanosaat 9-bit (termasuk pendahuluan 0)                 047000000
                   P               Tanda petang huruf besar               PM
                p               Huruf kecil huruf besar dan tanda petang                 pm
                    z               RFC 822 mengimbangi digital daripada GMT                   -0800
                  Z               Zon waktu               PST
s               Bilangan saat sejak 1970-01-01 00:00:00 GMT                        1078884319
                    S               Sejak 1970-01-01 00:00:00 GMT indah 1078884319047

Terdapat kelas lain berkaitan tarikh dan masa yang berguna. Untuk butiran lanjut, anda boleh merujuk kepada dokumentasi standard Java.


Menghuraikan rentetan sebagai masa

Kelas SimpleDateFormat mempunyai beberapa kaedah tambahan, terutamanya parse(), yang cuba menghuraikan rentetan mengikut storan terformat bagi objek SimpleDateFormat yang diberikan . Contohnya:

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

Hasil kompilasi dan larian contoh di atas adalah seperti berikut:

$ 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

Java sleep (tidur)

sleep() meletakkan arus benang ke dalam keadaan bertakung (menyekat benang semasa ), tujuan menghentikan penggunaan CPU adalah untuk menghalang benang semasa daripada menduduki sumber CPU yang diperolehi oleh proses sahaja, supaya meninggalkan sejumlah masa untuk yang lain benang untuk dilaksanakan.

Anda boleh meletakkan atur cara untuk tidur selama milisaat atau selagi komputer anda bertahan. Sebagai contoh, program berikut akan tidur selama 3 saat:

import java.util.*;
  
public class SleepDemo {
   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(1000*3);   // 休眠3秒
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) { 
          System.out.println("Got an exception!"); 
      }
   }
}

Hasil penyusunan dan larian contoh di atas adalah seperti berikut:

Thu Sep 17 10:20:30 CST 2015

Thu Sep 17 10:20:33 CST 2015

Masa pengukuran

Contoh berikut menunjukkan cara mengukur selang masa (dalam milisaat):

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

Kompilasi dan larian keputusan contoh di atas adalah seperti berikut:

Fri Jan 08 09:48:47 CST 2016

Fri Jan 08 09:48:50 CST 2016

Difference is : 3019

Kelas Kalendar

Kami kini boleh memformat dan mencipta objek tarikh, tetapi bagaimana kami boleh menetapkan dan mendapatkan bahagian tertentu data tarikh, seperti jam, hari, atau minit Bagaimana kita menambah atau menolak nilai daripada bahagian tarikh ini. Jawapannya ialah menggunakan kelas Kalendar.

Kelas Kalendar jauh lebih berkuasa daripada kelas Date, dan pelaksanaannya juga lebih kompleks daripada kelas Date.

Kelas Kalendar ialah kelas abstrak yang melaksanakan objek subkelas tertentu dalam penggunaan sebenar Proses mencipta objek adalah telus kepada pengaturcara, dan hanya perlu dibuat menggunakan kaedah getInstance.

Buat objek Kalendar yang mewakili tarikh semasa sistem

Calendar c = Calendar.getInstance();//默认是当前日期

Buat objek Kalendar untuk tarikh tertentu

Untuk menggunakan kelas Kalendar untuk mewakili masa tertentu, anda perlu mencipta objek Kalendar dahulu, dan kemudian tetapkan parameter tahun, bulan dan hari dalam objek untuk dilengkapkan.

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

Jenis medan objek kelas Kalendar

Pemalar ini digunakan dalam kelas Kalendar untuk mewakili makna yang berbeza dalam jdk sebenarnya menggunakan idea ini

常量描述
Calendar.YEAR年份
Calendar.MONTH月份
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期,和上面的字段意义完全相同
Calendar.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
Calendar.MINUTE分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK星期几

Tetapan maklumat objek kelas kalendar

Tetapkan tetapan

Contohnya:

Calendar c1 = Calendar.getInstance();

Panggil:

public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

Gunakan jenis medan Tetapan

Jika anda hanya menetapkan nilai medan tertentu, seperti tarikh, anda boleh menggunakan kaedah set berikut:

public void set(int field,int value)

Tetapkan tarikh yang diwakili oleh objek c1 kepada ke-10, dan semua nilai lain akan Dikira Semula

c1.set(Calendar.DATE,10);

Tetapkan tahun yang diwakili oleh objek c1 kepada 2008, dan semua nilai lain ​​​​akan dikira semula

c1.set(Calendar.YEAR,2008);

Maksud atribut medan lain set disimpulkan dengan analogi

Tambah tetapan

Calendar c1 = Calendar.getInstance();

Tambah 10 pada tarikh objek c1, iaitu, c1 dinyatakan sebagai tarikh 10 hari kemudian, dan semua nilai lain ​​akan dikira semula

c1.add(Calendar.DATE, 10);

Tolak 10 daripada tarikh objek c1, iaitu, c1 dinyatakan sebagai tarikh 10 hari yang lalu, dan semua nilai lain ​​​​akan dikira semula

<pre>c1.add(Calendar.DATE, -10);

Maksud tambah untuk atribut medan lain disimpulkan dengan cara yang sama

Pemerolehan maklumat objek kelas Kalendar

Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

kelas GregorianCalendar

Kelas Kalendar melaksanakan kalendar Gregorian dan Kalendar Gregorian ialah pelaksanaan khusus bagi kelas Kalendar.

Kaedah getInstance() Kalendar mengembalikan objek GregorianCalendar yang dimulakan secara lalai dengan tempat semasa dan zon waktu. GregorianCalendar mentakrifkan dua medan: AD dan BC. Ini mewakili dua era yang ditakrifkan oleh kalendar Gregorian.

Berikut ialah beberapa kaedah pembinaan objek GregorianCalendar:

序号构造函数和说明
                    1GregorianCalendar()
在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。
                    2GregorianCalendar(int year, int month, int date)
在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar
                    3GregorianCalendar(int year, int month, int date, int hour, int minute)
为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。
                    4GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
  为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。
                    5GregorianCalendar(Locale aLocale)
在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。
                    6GregorianCalendar(TimeZone zone)
在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。
                    7GregorianCalendar(TimeZone zone, Locale aLocale)
 在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

Berikut ialah senarai beberapa kaedah berguna yang disediakan oleh kelas GregorianCalendar:

Nombor siriKaedah dan arahan
1batal tambah(medan int, jumlah int)
Menambah jumlah masa yang ditentukan (ditandatangani) pada medan kalendar yang diberikan mengikut peraturan kalendar.
2dilindungi void computeFields()
Tukar nilai milisaat UTC kepada nilai domain masa
                      3dilindungi void computeTime()
Gantikan Kalendar dan tukar nilai domain masa kepada nilai milisaat UTC
4boolean sama(Obj objek)
Membandingkan GregorianCalendar ini dengan Objek yang ditentukan.
5int get(int medan)
Dapatkan nilai masa medan yang ditentukan
6int getActualMaximum(int medan)
Mengembalikan tarikh semasa, nilai maksimum medan yang diberikan
7int getActualMinimum(int medan)
Mengembalikan tarikh semasa, nilai minimum medan yang diberikan
8int getGreatestMinimum(int medan)
Mengembalikan nilai minimum tertinggi untuk medan kalendar yang diberikan dalam contoh GregorianCalendar ini.
9Tarikh getGregorianChange()
Dapatkan tarikh perubahan kalendar Gregorian.
10int getLeastMaximum(int medan)
Mengembalikan nilai maksimum terendah untuk medan kalendar yang diberikan dalam contoh GregorianCalendar ini
11int getMaximum(int medan)
Mengembalikan nilai maksimum medan kalendar yang diberikan untuk contoh GregorianCalendar ini.
12Tarikh getTime()
Dapatkan masa semasa kalendar.
13long getTimeInMillis()
Dapatkan masa semasa kalendar dinyatakan sebagai integer panjang
                     14TimeZone getTimeZone()
Dapatkan zon waktu.
15int getMinimum(int medan)
Mengembalikan nilai minimum medan yang diberikan.
          &