Latest web development tutorials

Java Data Godzina

Data pakiet java.util oferuje lekcje do hermetyzacji aktualną datę i godzinę. Klasa Date oferuje dwa konstruktory instancję obiektu Date.

Pierwszy konstruktor wykorzystuje aktualną datę i czas, aby zainicjować obiektu.

Date( )

Drugi konstruktor przyjmuje parametr, czyli liczbę milisekund od 1 stycznia 1970 r.

Date(long millisec)

Po utworzeniu obiektu Date, można wywołać w następujący sposób.

Nie. Sposób i opis
1 boolean po (data data)
Jeśli ta metoda jest wywoływana, gdy obiekt Date po określonej dacie zwraca wartość true, w przeciwnym razie zwraca false.
2 boolean przed (data data)
Jeśli ta metoda jest wywoływana, gdy obiekt Date przed wyznaczonym terminem zwraca wartość true, w przeciwnym razie zwraca false.
3 klon Object ()
Zwraca kopię tego obiektu.
4 int compareTo (data data)
Porównaj ta metoda jest wywoływana, gdy obiekt Date do określonej daty. Zwraca 0, gdy obie są równe. obiekt Zadzwoń przed wyznaczonym terminem zwraca liczbę ujemną. obiekt Zadzwoń po określonej dacie powrócił liczbę dodatnią.
5 int compareTo (Object obj)
Jeśli obj jest formatu daty, operacja jest równoważna CompareTo (data). W przeciwnym razie, to rzuca ClassCastException.
6 boolean equals (Object) Data
Podczas rozmowy telefonicznej z tej metody i Data obiekt jest równa podanej daty, kiedy zwraca true, w przeciwnym razie zwraca false.
7 długie getTime ()
Zwraca liczbę milisekund od 1 stycznia 1970 00:00:00 GMT reprezentowanym przez ten obiekt Date.
8 int hashCode ()
Zwraca kod skrótu dla tego obiektu.
9 void setTime (długi czas)

Własna 1 stycznia 1970 00:00:00 GMT milisekund później czas, aby ustawić godzinę i datę.
10 String toString ()
Konwersja Data reprezentacja obiektu String i zwraca ciąg znaków.

Pobierz aktualną datę i czas

Java pobiera aktualną datę i czas jest bardzo prosta, należy użyć metody obiektu Date toString (), aby wydrukować bieżącą datę i godzinę, co następuje:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

Mon May 04 09:51:52 CDT 2013

Porównanie dat

Java używa trzech metod porównywania dwóch następujących terminach:

  • Użyj metody getTime (), aby uzyskać dwie daty (1 stycznia 1970 roku przez liczbę milisekund od daty), a następnie porównać dwie wartości.
  • Użyj wcześniej (), po () i equals (). Na przykład miesiąc wcześniej 12 niż 18, nowa data (99, 2, 12) .Przed (new Date (99, 2, 18)) zwraca true.
  • Zastosowanie metody compareTo (), która jest określona przez porównywalnym interfejsu Data klasa implementuje ten interfejs.

Zastosowanie SimpleDateFormat do formatowania dat

Klasa SimpleDateFormat locale jest wrażliwy sposób do formatowania i parsowania dat. SimpleDateFormat pozwala wybrać dowolną datę i godzinę uruchomienia niestandardowego formatu użytkownika. Na przykład:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

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

Format kodowania Proste DateFormat

Czas ciąg wzór służy do określenia formatu czasu. W tym trybie, wszystkie litery ASCII są zastrzeżone jako wzór litery są zdefiniowane w następujący sposób:

list opis przykład
G znak Era AD
y cztery lata 2001
M miesiąc Lipca lub 07
d data Miesiąc 10
h AM / PM (1 ~ 12) godzin Format 12
H Godziny w ciągu dnia (od 0 do 23) 22
m Liczba minut 30
s sekundy 55
S milisekund 234
E Dzień tygodnia wtorek
D Dzień roku 360
F Pierwsze tygodnie miesiąca tygodnia 2 (drugi śr w lipcu)
w Pierwszych kilka tygodni w roku 40
W Pierwsze tygodnie w miesiącu 1
AM / PM mark PM
k Godzina dnia (1 do 24) 24
K AM / PM (0 ~ 11) godzin Format 10
oo strefa czasu Eastern Standard Time
' separator tekstu ogranicznik
" pojedyncze cudzysłowy `

Zastosowanie formatu daty printf

Metoda printf można łatwo sformatowany czas i datę. Użyj formatu dwuliterowy, to rozpoczyna się t oraz w poniższej tabeli na końcu listu. Na przykład:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

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

Jeśli trzeba powtórzyć data oferty, a następnie użyć tej metody, aby sformatować każda część jest nieco skomplikowana. W ten sposób można korzystać z ciągiem formatu wskazał być sformatowany parametr indeksu.

Indeks musi natychmiast% tyłu i musi kończyć się $. Na przykład:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

Due date: February 09, 2004

Alternatywnie, można użyć <flagę. Pokazuje ona wcześniej sformatowana parametry mają być ponownie wykorzystane. Na przykład:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

Due date: February 09, 2004

Data i czas konwersji znaków

charakter opis przykład
c Kompletna data i godzina Pon 04 maj 2009 09:51:52 CDT
F Format daty ISO 8601 09/02/2004
D USA format daty (miesiąc / dzień / rok) 09/02/2004
T Czas 24 godzin 18:05:19
R Czas 12-godzinny 18:05:19
R Czas 24-godzinny, nie zawiera sekund 18:05
Y 4 rok (z zerem) 2004
y Po dwóch latach (z zerem) 04
C 2 lata temu (z zerem) 20
B Pełna nazwa miesiąca luty
b Miesiąc Akronim lutego
n 2 miesiące (z zerem) 02
d 2 dni (z zerem) 03
e 2 dni (bez początkowego 0) 9
Tydzień pełna nazwa poniedziałek
Krótki tydzień pon
j 3 lata (z zerem) 069
H 2 godzin (z zerem), 00-23 18
k 2 godziny (bez początkowego 0), 0-23 18
ja 2 godzin (z zerem), 01-12 06
l 2 godziny (bez początkowego 0), 1-12 6
M 2 minut (z zerem) 05
S 2 sekundy (z zerem) 19
L 3 ms (z zerem) 047
N 9 ns (z zerem) 047000000
P Kapitalizowane po południu flagą PM
p Po południu małymi logo pm
oo Przesunięcie GMT w RFC 822 Cyfrowej -0800
Z strefa czasu PST
s Liczba sekund od 1970-01-01 00:00:00 GMT 1078884319
Q Ponieważ 1970-01-01 00:00:00 GMT centów wspaniałe 1078884319047

Istnieją inne przydatne data i czas w klasie. Aby uzyskać więcej informacji można znaleźć w standardowej dokumentacji Java.


Parsowania ciąg do czasu

Klasa SimpleDateFormat ma kilka dodatkowych metod, zwłaszcza parse (), który starał się daną SimpleDateFormat format przechowywania obiektu do analizowania ciąg. Na przykład:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

$ 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 w stanie uśpienia (Sleep)

sleep () sprawia, że ​​aktualny wątek w stan stagnacji (bloki bieżącego wątku), więc, że użycie procesora, celem jest utrzymanie bieżącego wątku sami zajmują zasoby procesora uzyskanych w procesie zostawić trochę czasu, aby przypadkiem innego wątku wykonania.

Można pozwolić uśpienia Program jednej milisekundy długi okres czasu lub na którykolwiek z życia komputera. Na przykład, poniższy program będzie spać trzy sekundy:

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

Thu Sep 17 10:20:30 CST 2015

Thu Sep 17 10:20:33 CST 2015

czas pomiaru

Oto przykład, który pokazuje, jak mierzyć odstępach czasu (w milisekundach):

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

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

Fri Jan 08 09:48:47 CST 2016

Fri Jan 08 09:48:50 CST 2016

Difference is : 3019

Klasa Kalendarz

Jesteśmy teraz w stanie sformatować i utworzyć obiekt data, ale w jaki sposób możemy ustawić i pobrać konkretną część tego aktualne dane, takie jak godziny, dni, lub minut? W jaki sposób możemy w tych częściach daty dodatni lub ujemny ? odpowiedź jest użycie kategorię Kalendarz.

Wiele zaawansowanych funkcji niż klasa Kalendarz Data klasy, ale także w realizacji niż kompleksu Data klasie.

Klasa Kalendarz jest klasą abstrakcyjną, która implementuje konkretną podklasę obiektów rzeczywistego wykorzystania, tworzenie obiektów jest przezroczyste dla programista musi tylko zostać stworzony, aby użyć metody getInstance.

Tworzenie obiektu Kalendarz reprezentujący bieżącą datę systemową

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

Tworzenie określonego obiektu kalendarza datę

Użyj klasa Kalendarz przedstawia szczególny czas, trzeba najpierw utworzyć obiekt Kalendarz, a następnie ustawia parametry obiektu Date, aby zakończyć.

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

Kalendarz typ pola obiekt klasy

Rodzaj Kalendarz stosowany w tych stałych reprezentują różne znaczenia, wiele myśl tej klasy są rzeczywiście używane w JDK

stały opis
Calendar.YEAR lata
Calendar.MONTH miesiąc
Calendar.DATE data
Calendar.DAY_OF_MONTH Data i identyczny z powyższych dziedzinach znaczenia
Calendar.HOUR 12-godzinna recepcja
Calendar.HOUR_OF_DAY 24-godzinna recepcja
Calendar.MINUTE minuta
Calendar.SECOND drugi
Calendar.DAY_OF_WEEK Dzień tygodnia

Ustawianie Kalendarz informacje klasa obiektu

skonfigurować ustawienia

Takich jak:

Calendar c1 = Calendar.getInstance();

Zadzwoń:

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

Użyj ustawień typ pola

Gdyby tylko ustawić pole, takie jak data wartość można ustawić za pomocą jednej z następujących metod:

public void set(int field,int value)

Obiekt Date oznacza C1 jest ustawiony na 10, wszystkie inne wartości są przeliczane

c1.set(Calendar.DATE,10);

Obiekt reprezentuje roku c1 jest ustawiony na 2008, wszystkie inne wartości są przeliczane

c1.set(Calendar.YEAR,2008);

Znaczenie innych właściwościach terenowych ustawić tak,

Dodaj ustawienie

Calendar c1 = Calendar.getInstance();

Planowanym terminem plus 10 C1, C1 jest również wyrażony w 10 dni po upływie terminu, wszystkie inne wartości są przeliczane

c1.add(Calendar.DATE, 10);

Datą docelową minus 10 C1, C1 jest również wyrażony w terminie 10 dni temu, wszystkie inne wartości zostaną przeliczone

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

dodaj czyli inne właściwości pola tak

Klasa Kalendarz obiektu w celu uzyskania informacji

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

Klasa kalendarz gregoriański

Klasa realizuje kalendarz gregoriański kalendarz, klasa kalendarz gregoriański kalendarz jest konkretna realizacja.

Kalendarz getInstance () zwraca wartość domyślną z obecnej regionalnych i strefy czasowej zainicjowany obiekt kalendarz gregoriański. Kalendarz gregoriański definiuje dwa pola: AD i BC. Reprezentują one dwa kalendarz zdefiniował erę.

Poniżej przedstawiamy kilka konstruktora obiektu kalendarz gregoriański:

Nie. Konstruktor i opis
1 Kalendarz gregoriański ()
Gdy masz strefa domyślna Domyślny czas locale Konstruuje domyślny prąd kalendarz gregoriański.
2 Kalendarz gregoriański (int rok, int miesiąc, int data)
Gdy masz strefa domyślna domyślne ustawienia regionalne Konstruuje kalendarz gregoriański z datą danego zbioru
3 Kalendarz gregoriański (int rok, int miesiąc, data int, int godzina, int minuta)
Posiadanie domyślnej lokalizacji domyślnej strefy czasowej na kalendarz gregoriański Konstruuje danego ustawienia daty i godziny.
4 Kalendarz gregoriański (int rok, int miesiąc, int dzień, int godzina, int minuta, int sekunda)
Posiadanie domyślnej lokalizacji domyślnej strefy czasowej na kalendarz gregoriański Konstruuje danego ustawienia daty i godziny.
5 Kalendarz gregoriański (Locale aLocale)
Kiedy trzeba ustawić obszar domyślne ustawienia regionalne Konstruuje aktualny kalendarz gregoriański w oparciu czas.
6 Kalendarz gregoriański (strefa TimeZone)
W domyślnym locale strefy podano czasu skonstruowania kalendarz gregoriański w oparciu o aktualny czas.
7 Kalendarz gregoriański (strefa czasowej, Locale aLocale)
W danym locale danej strefy czasowej Konstruuje kalendarz gregoriański w oparciu o aktualny czas.

Oto lista klasie kalendarz gregoriański oferuje kilka przydatnych metod:

Nie. Sposób i opis
1 void add (int pole, int wysokość )
Zgodnie z zasadami określonymi kalendarzowych (podpisany) ilość czasu na danym polu kalendarzowego.
2 protected void computeFields ()
UTC konwersji ms wartość progowa czasu
3 protected void computeTime ()
Pokrycie kalendarz, konwertuje wartości pól czas UTC jako milisekund
4 boolean equals (Object obj)
Porównuje ten kalendarz gregoriański do określonego obiektu.
5 int get (int Pole)
Pobiera wartość czasu określonego pola
6 int getActualMaximum (int Pole)
Zwraca bieżącą datę, maksymalną wartość danej dziedzinie
7 int getActualMinimum (int Pole)
Zwraca bieżącą datę minimalnej wartości danej dziedzinie
8 int getGreatestMinimum (int Pole)
Kalendarz gregoriański Zwraca największą wartość minimalną dla danej dziedzinie kalendarzowego.
9 Data getGregorianChange ()
Uzyskaj datę Zmiana gregoriański.
10 int getLeastMaximum (int Pole)
Zwraca ta instancja kalendarz gregoriański danej dziedzinie kalendarzowego najniższa wartość maksymalna
11 int getMaximum (int Pole)
Zwraca instancję kalendarz gregoriański podane pole maksymalna kalendarzowy.
12 Data getTime ()
Pobierz aktualny czas kalendarzowy.
13 długie getTimeInMillis ()
Pobierz kalendarz z długim reprezentacji całkowitej obecnej chwili
14 TimeZone getTimeZone ()
Uzyskaj strefę czasową.
15 int getMinimum (int Pole)
Powrót do minimalnej wartości danej dziedzinie.
16 int hashCode ()
Przepisz hashCode.
17 logiczna ISLEAPYEAR (int rok)
Określa, czy dany rok jest rokiem przestępnym.
18 Rolka void (int pole, logiczna up )
Na polu czasowym danej dodać lub odjąć jedną jednostkę czasu (góra / dół), nie zmieniając większych pól.
19 void set (int pole, int value )
W polu wartości danego czasu.
20 void set (int rok, int miesiąc , int data)
Ustaw rok, wartość miesiąca i dnia.
21 void set (int rok, int miesiąc , int dzień, int godzina, int minuta)
Ustaw rok, miesiąc, dzień, godzina, minuta wartość.
22 void set (int rok, int miesiąc , int dzień, int godzina, int minuta, int sekunda)
Ustaw rok, godzina, minuta, a po drugie wartości miesiąca, dzień.
23 void setGregorianChange (data data)
Ustawia datę Zmiana kalendarz gregoriański.
24 void setTime (data data)
W chwili obecnej w danej ustawić datę kalendarza.
25 void setTimeInMillis (długi Millis)
Z podanej liczby typu long jest aktualny czas ustawiony milisekund kalendarza.
26 void setTimeZone (wartość TimeZone)
Z ustawień strefy czasowej do aktualnej strefy czasowej.
27 String toString ()
Zwraca ciąg, który reprezentuje kalendarz.

Przykłady

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;
      // 初始化 Gregorian 日历
      // 使用当前时间和日期
      // 默认为本地时间和时区
      GregorianCalendar gcalendar = new GregorianCalendar();
      // 显示当前时间和日期的信息
      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));
      
      // 测试当前年份是否为闰年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("当前年份是闰年");
      }
      else {
         System.out.println("当前年份不是闰年");
      }
   }
}

Powyższe przykłady zebrane wyniki przedstawiają się następująco:

Date: Apr 22 2009
Time: 11:25:27
当前年份不是闰年