1. Date
clasa si ora Unix
De la începutul Java, limbajul a avut o clasă specială pentru lucrul cu ore și date — Date
. De-a lungul timpului, au apărut mai multe clase pentru lucrul cu datele, dar programatorii continuă să folosească clasa Date
și astăzi.
Acest lucru se datorează faptului că este foarte simplu și convenabil. Și ca programator, cu siguranță îl vei întâlni în orice proiect real. Dacă să-l folosești sau nu este alegerea ta, dar trebuie să-l știi. Așa că acordă-i câteva minute din timpul tău prețios.
Ce face Date
clasa atât de bună? Simplitatea sa.
Clasa Date
stochează informații despre dată și oră ca număr de milisecunde care au trecut de la 1 ianuarie 1970. Adică o mulțime de milisecunde, așa că long
tipul este folosit pentru a le stoca.
De ce anume din 1970? Acesta este așa-numitul timp Unix : este modul în care sistemul de operare Unix, care este bunicul tuturor sistemelor de operare moderne, păstrează timpul.
Dar puteți afla foarte ușor cât timp a trecut între două date: doar scădeți o dată din cealaltă și obțineți diferența de timp dintre date la cea mai apropiată milisecundă.
Iată câteva exemple utile de lucru cu Date
clasa.
2. Obținerea datei curente
Pentru a obține ora și data curente, pur și simplu creați un Date
obiect. Fiecare obiect nou stochează ora când a fost creat. Pare foarte simplu:
Date current = new Date();
După executarea acestei comenzi, current
variabila va stoca o referință la Date
obiectul creat, care va stoca intern ora creării sale - numărul de milisecunde care au trecut de la 1 ianuarie 1970.
Afișarea datei curente pe ecran
Pentru a afișa data curentă, pur și simplu: a) creați un Date
obiect nou, b) imprimați-l pe ecran folosind System.out.println()
metoda.
Exemplu:
Cod | Ieșire de consolă |
---|---|
|
|
Iată ce înseamnă ieșirea consolei:
Text | Interpretare |
---|---|
joi joi | joi |
21 februarie | 21 februarie |
14:01:34 | ore : minute : secunde |
EET | Fus orar: Ora Europei de Est |
2019 | An |
3. Setarea unei date specifice
Ne-am dat seama cum să obținem ora curentă, dar cum creăm un Date
obiect care stochează o dată sau oră diferită?
Din nou, totul este simplu aici. Pentru a seta o anumită dată, trebuie să scrieți cod astfel:
Date birthday = new Date(year, month, day);
Totul este simplu și evident, dar există două nuanțe de care trebuie să fii conștient:
- Anul trebuie numărat începând cu 1900.
- Lunile sunt numerotate de la zero.
Aceasta este o altă moștenire a sistemului de operare Unix: pe Unix, programatorii au indicat anul folosind două cifre. În loc de 1977, au scris pur și simplu 77. Deci 77 este anul corect dacă numărăm de la 1900.
De exemplu, m-am născut pe 21 martie 1989. Martie este a treia lună, așa că trebuie să scriu:
Cod | Ieșire de consolă |
---|---|
|
|
Lunile sunt numerotate de la zero, dar zilele nu sunt. E puțin ciudat, nu?
Credem că adevărații programatori ar fi trebuit să prevaleze și să numere și zilele lunii de la zero. Oh, conformiștii ăștia 🙂
Setarea unei anumite ore
Setarea unei anumite ore este, de asemenea, destul de simplă: pentru aceasta, trebuie să scrieți o declarație ca aceasta:
Date birthday = new Date(year, month, day, hour, minutes, seconds);
Orele, minutele și secundele sunt numerotate de la zero: lasă programatorul din tine să răsufle uşurat.
Exemplu:
Cod | Ieșire de consolă |
---|---|
|
|
Am stabilit ora 12:15 și data 4 iunie 2005 . Acest lucru este puțin dificil de citit pentru un non-programator, dar funcționează așa cum ar trebui.
4. Lucrul cu elemente ale unei date
Puteți face mai mult cu un Date
obiect decât să îl afișați. Are metode care vă permit să obțineți elemente individuale ale datei stocate intern:
Metodă | Descriere |
---|---|
|
Returnează anul datei relativ la 1900. |
|
Returnează luna datei (lunile sunt numerotate de la zero) |
|
Returnează ziua lunii |
|
Returnează ziua săptămânii |
|
Returnează orele |
|
Returnează minutele |
|
Returnează secundele |
Exemplu:
Cod | Ieșire de consolă | Notă |
---|---|---|
|
|
2005 iunie ziua lunii sâmbătă |
Apropo, un Date
obiect nu numai că vă permite să obțineți elemente individuale ale unei date, dar și să le schimbați:
Metodă | Descriere |
---|---|
void setYear(int year) |
Schimbă anul datei. Anul este indicat în raport cu 1900. |
void setMonth(int month) |
Schimbă luna datei (lunile sunt numerotate de la zero) |
void setDate(int date) |
Schimbă ziua lunii |
void setHours(int hours) |
Schimbă orele |
void setMinutes(int minutes) |
Schimbă minute |
void setSeconds(int seconds) |
Schimbă secunde |
5. Milisecunde
După cum am spus anterior, Date
obiectul stochează numărul de milisecunde care au trecut de la 1 ianuarie 1970.
Dacă avem nevoie de acel număr, îl putem obține de la Date
obiect:
long time = date.getTime();
Metoda getTime()
returnează numărul de milisecunde stocat în interiorul obiectului Date
.
Nu numai că puteți obține numărul de milisecunde, dar puteți și modifica acel număr într-un obiect existent:
Date date = new Date();
date.setTime(1117876500000L);
Apropo, puteți scrie acest lucru și mai concis, trecând timpul obiectului Date
chiar atunci când este creat:
Date date = new Date(1117876500000L);
6. Compararea datelor
Dacă doriți să comparați două date și să aflați care a fost primul, aveți trei opțiuni
Prima modalitate este de a compara pur și simplu numărul de milisecunde pe care fiecare le stochează:
if (date1.getTime() < date2.getTime())
A doua modalitate este de a folosi before()
metoda unui Date
obiect:
if (date1.before(date2))
Se citește astfel: dacă date1
vine înainte date2
, atunci...
A treia modalitate este de a folosi after()
metoda unui Date
obiect:
if (date2.after(date1))
Se citește astfel: dacă date2
este după date1
, atunci...
7. DateFormat
clasa
Amintiți-vă, când am afișat data pe ecran, am văzut ceva de genul: Thu Feb 21 14:01:34 EET 2019
. Totul pare corect, dar formatul este mai degrabă modul în care o dată ar fi afișată pentru programatori decât pentru oamenii normali. Dorim să afișăm data mai clar pentru utilizatori. Ceva de genul Tuesday, February 21
.
Și fără anul. Sau cu un an, la nevoie. În general, dorim să putem afișa data în moduri diferite.
Există o clasă specială pentru aceasta: SimpleDateFormat
.
Exemplu:
Cod |
---|
|
Ieșire de consolă |
|
Uită-te la ce a afișat programul: Jun-04-2005
. Nu este deloc ceea ce a fost.
Diferența este că nu am afișat obiectul Date
în sine, ci un șir special obținut prin apelarea format()
metodei pe un SimpleDateFormat
obiect. Dar acesta nu este nici măcar punctul principal aici.
Când SimpleDateFormat
obiectul a fost creat, am trecut șirul "MMM-dd-YYYY"
ca parametru. Acest șir este cel care transmite formatul de dată pe care l-am văzut în cele din urmă în ieșirea consolei.
- MMM indică afișarea numelui lunii, prescurtat folosind trei litere
- dd indică afișarea zilei lunii
- YYYY indică afișarea anului folosind patru cifre
Dacă vrem să scoatem luna ca numere, atunci în loc de MMM
, trebuie să scriem MM
, ceea ce produce modelul "MM-dd-YYYY"
. Ieșirea ecranului va fi06-04-2005
Vom discuta despre această clasă mai detaliat mai târziu.
8. Date.parse
metoda
Clasa Date
poate face altceva interesant și util - poate obține o dată dintr-un șir. Sau, după cum spun programatorii, poate analiza un șir.
Are parse()
metoda specială pentru asta. Analizarea arată astfel:
Date date = new Date();
date.setTime( Date.parse("Jul 06 12:15:00 2019") );
Apropo, acest cod poate fi scris mai compact:
Date date = new Date("Jul 06 12:15:00 2019");
Vom lua în considerare analizarea șirurilor de caractere mai detaliat în alte lecții.
GO TO FULL VERSION