Wat is de beste manier om de huidige datum/tijd in Java te krijgen?
Antwoord 1, autoriteit 100%
Het hangt af van welke vorm van datum/tijd je wilt:
-
Als u de datum/tijd als een enkele numerieke waarde wilt, dan geeft
System.currentTimeMillis()
u dat, uitgedrukt als het aantal milliseconden na het UNIX-tijdperk (als een Javalong
). Deze waarde is een delta vanaf een UTC-tijdstip en is onafhankelijk van de lokale tijdzone1. -
Als u de datum/tijd in een vorm wilt die u numeriek toegang geeft tot de componenten (jaar, maand, enz.), kunt u een van de volgende gebruiken:
-
new Date()
geeft je eenDate
object, geïnitialiseerd met de huidige datum/tijd. Het probleem is dat deDate
API-methoden meestal gebrekkig zijn … en verouderd. -
Calendar.getInstance()
geeft u eenCalendar
-object dat is geïnitialiseerd met de huidige datum/tijd, met behulp van de standaardLocale
enTimeZone
. Bij andere overbelastingen kunt u een specifiekeLocale
en/ofTimeZone
gebruiken. Agenda werkt … maar de API’s zijn nog steeds omslachtig. -
new org.joda.time.DateTime()
geeft je een Joda-timeobject geïnitialiseerd met de huidige datum/tijd, met gebruik van de standaard tijdzone en chronologie. Er zijn tal van andere Joda-alternatieven … te veel om hier te beschrijven. (Maar houd er rekening mee dat sommige mensen melden dat Joda time prestatieproblemen heeft.; bijv. https://stackoverflow.com/questions/6280829.) -
in Java 8 geeft het aanroepen van
java.time.LocalDateTime.now()
enjava.time.ZonedDateTime.now()
voorstellingen2voor de huidige datum/tijd.
-
Vóór Java 8 adviseerden de meeste mensen die van deze dingen afweten Joda-timeals met (veruit) de beste Java API’s om dingen te doen met berekeningen van tijdstippen en duur.
Bij Java 8 en hoger wordt het standaard pakket java.time
aanbevolen. Joda-tijd wordt nu als “verouderd” beschouwd en de Joda-beheerders raden mensen aan te migreren.3.
1 – System.currentTimeMillis()
geeft de “systeem” tijd. Hoewel het normaal is dat de systeemklok wordt ingesteld op (nominale) UTC, zal er een verschil (een delta) zijn tussen de lokale UTC-klok en echte UTC. De grootte van de delta hangt af van hoe goed (en hoe vaak) de systeemklok is gesynchroniseerd met UTC.
2 – Merk op dat LocalDateTime geen tijdzone bevat. Zoals de javadoc zegt: “Het kan geen moment op de tijdlijn weergeven zonder aanvullende informatie zoals een offset of tijdzone.”
3 – Let op: uw Java 8-code zal niet breken als u niet migreert, maar de Joda-codebase krijgt mogelijk geen bugfixes en andere patches meer. Vanaf 2020-02 is er geen officieel “einde van de levensduur” voor Joda aangekondigd en zijn de Joda API’s niet gemarkeerd als verouderd.
Antwoord 2, autoriteit 60%
(Let op: alleen voor gebruik met Java-versies <8. Voor Java 8+ bekijk andere antwoorden.)
Als u alleen een tijdstempel in het formaat JJJJ.MM.DD-UU.MM.SS (zeer vaak geval) wilt uitvoeren, dan is dit de manier om dit te doen:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
Antwoord 3, autoriteit 15%
Als je de huidige datum als String wilt, probeer dan dit:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
of
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
http:/ /www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/
Antwoord 4, autoriteit 12%
In Java 8is het:
LocalDateTime.now()
en voor het geval je tijdzone-informatie nodig hebt:
ZonedDateTime.now()
en voor het geval je een fancy opgemaakte string wilt printen:
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))
Antwoord 5, autoriteit 12%
tl;dr
Instant.now() // Capture the current moment in UTC, with a resolution of nanoseconds. Returns a `Instant` object.
of
ZonedDateTime.now( // Capture the current moment as seen in…
ZoneId.of( "America/Montreal" ) // … the wall-clock time used by the people of a particular region (a time zone).
) // Returns a `ZonedDateTime` object.
java.time
Een paar van de antwoorden vermelden dat java .time-klassen zijn de moderne vervanging voor de lastige oude verouderde datum-tijd-klassen die zijn gebundeld met de vroegste versies van Java. Hieronder staat wat meer informatie.
Tijdzone
De andere antwoorden leggen niet uit hoe een tijdzone cruciaal is bij het bepalen van de huidige datum en tijd. Voor elk bepaald moment variëren de datum ende tijd over de hele wereld per zone. Een paar minuten na middernacht is bijvoorbeeld een nieuwe dag in Parijs Frankrijkterwijl het nog steeds gisteren is. in Montreal Quebec.
Instant
Een groot deel van uw bedrijfslogica en gegevensopslag/-uitwisseling moet als best practice worden gedaan in UTC.
Voor het huidige moment in UTCmet een resolutie in nanoseconden, gebruik Instant
klasse. Conventionele computerhardwareklokken zijn beperkt in hun nauwkeurigheid, dus het huidige moment kan worden vastgelegd in milliseconden of microseconden in plaats van nanoseconden.
Instant instant = Instant.now();
ZonedDateTime
Je kunt die Instant
aanpassen aan andere tijdzones. Pas een ZoneId
bezwaar om een ZonedDateTime
te krijgen .
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
We kunnen de Instant
overslaan en de huidige ZonedDateTime
direct ophalen.
ZonedDateTime zdt = ZonedDateTime.now( z );
Geef altijd dat optionele tijdzone-argument door. Indien weggelaten, wordt de huidige standaardtijdzone van uw JVM toegepast. De standaard kan op elkmoment veranderen, zelfs tijdensruntime. Stel uw app niet bloot aan externe factoren waar u geen controle over heeft. Geef altijd de gewenste/verwachte tijdzone op.
ZonedDateTime do_Not_Do_This = ZonedDateTime.now(); // BAD - Never rely implicitly on the current default time zone.
Je kunt later een Instant
extraheren uit de ZonedDateTime
.
Instant instant = zdt.toInstant();
Gebruik altijd een Instant
of ZonedDateTime
in plaats van een LocalDateTime
wanneer u een actueel moment op de tijdlijn wilt. De typen Local…
hebben met opzet geen concept van tijdzone, dus vertegenwoordigen ze slechts een globaal idee van een mogelijk moment. Om een echt moment te krijgen, moet je een tijdzone toewijzen om de Local…
-typen om te zetten in een ZonedDateTime
en het daardoor zinvol te maken.
LocalDate
De LocalDate
klasse vertegenwoordigt een alleen-datum waarde zonder tijd van de dag en zonder tijdzone.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z ); // Always pass a time zone.
Snaren
Als u een tekenreeks wilt genereren die de datum-tijdwaarde vertegenwoordigt, roept u eenvoudig toString
aan in de java.time-klassen voor de standaard ISO 8601-indelingen.
String output = myLocalDate.toString(); // 2016-09-23
of
String output = zdt.toString(); // 2016-09-23T12:34:56.789+03:00[America/Montreal]
De klasse ZonedDateTime
breidt het standaardformaat uit door verstandig de naam van de tijdzone tussen vierkante haken toe te voegen.
Zoek voor andere indelingen Stack Overflow voor veel vragen en antwoorden op de DateTimeFormatter
klasse.
Vermijd LocalDateTime
In tegenstelling tot de opmerking over de vraag van RamanSB, moet u geengebruiken LocalDateTime
klasse voor de huidige datum-tijd.
De LocalDateTime
heeft met opzet geen tijdzone of offset-van-UTC-informatie. Dit is dus nietgepast wanneer u een specifiek moment op de tijdlijn volgt. Zeker nietgeschikt om het huidige moment vast te leggen.
Een LocalDateTime
heeft alleen een datum en een tijd van de dag, zoals “middag op 23 januari 2020”, maar we hebben geen idee of dat de middag is in Tokyo Japan of de middag in Toledo Ohio VS, twee verschillende momenten die vele uren uit elkaar liggen.
De lokale formulering is contra-intuïtief. Het betekent elkeplaats in plaats van één specifieke plaats. Kerstmis begint dit jaar bijvoorbeeld om middernacht op 25 december: 2017-12-25T00:00:00
, weergegeven als een LocalDateTime
. Maar dit betekent middernacht op verschillende punten over de hele wereld op verschillende tijdstippen. Middernacht vindt eerst plaats in Kiribati, later in Nieuw-Zeeland, uren later in India, enzovoort, er gaan nog enkele uren voorbij voordat Kerstmis begint in Frankrijk, terwijl de kinderen in Canada nog steeds op die dag wachten. Elk van deze kerststartpunten zou worden weergegeven als een aparte ZonedDateTime
.
Van buiten uw systeem
Als u uw systeemklok niet kunt vertrouwen, raadpleegt u Java: huidige datum en tijd ophalen van server, niet van systeemkloken mijn antwoord.
java.time.Clock
Als u een alternatieve leverancier van het huidige moment wilt gebruiken, schrijft u een subklasse van de abstracte java.time.Clock
klasse.
U kunt uw Clock
implementatie als argument doorgeven aan de verschillende java.timemethoden. Bijvoorbeeld Instant.now( clock )
.
Instant instant = Instant.now( yourClockGoesHere ) ;
Let voor testdoeleinden op de alternatieve implementaties van Clock
die statisch beschikbaar zijn vanaf Clock
zelf: fixed
, offset
, tick
, en meer.
Over java.time
De java.timeframework is ingebouwd in Java 8 en hoger. Deze klassen vervangen de lastige oude legacydatum-tijdklassen zoals java.util.Date
, Calendar
, & SimpleDateFormat
.
Zie voor meer informatie de Oracle-zelfstudie. En zoek Stack Overflow voor veel voorbeelden en uitleg. Specificatie is JSR 310.
Het Joda-Time-project, nu in onderhoudsmodus, adviseert migratie naar de java.timeklassen.
U kunt java.timeobjecten rechtstreeks uitwisselen met uw database. Gebruik een JDBC-stuurprogrammadat voldoet aan JDBC 4.2of hoger. Geen strings nodig, geen java.sql.*
klassen.
Waar zijn de java.time-klassen te verkrijgen?
- Java SE 8, Java SE 9, Java SE 10, Java SE 11en later – Onderdeel van de standaard Java API met een gebundelde implementatie.
- Java 9 voegt enkele kleine functies en oplossingen toe.
- Java SE 6en Java SE 7
- De meeste java.time-functionaliteit is teruggekoppeld naar Java 6 & 7 in ThreeTen-Backport.
- Android
- Latere versies van Android-bundelimplementaties van de klassen java.time.
- Voor eerdere Android (<26), de ThreeTenABP-project past ThreeTen-Backport(hierboven vermeld). Zie ThreeTenABP gebruiken.
Het ThreeTen-Extra-project breidt java.time uit met extra lessen. Dit project is een proeftuin voor mogelijke toekomstige toevoegingen aan java.time. Mogelijk vindt u hier enkele nuttige klassen, zoals Interval
, YearWeek
, YearQuarter
en meer.
Antwoord 6, autoriteit 7%
Maak gewoon een Date-object…
import java.util.Date;
Date date = new Date();
Antwoord 7, autoriteit 6%
// 2015/09/27 15:07:53
System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 15:07:53
System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 09/28/2015
System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime()));
// 20150928_161823
System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) );
// Mon Sep 28 16:24:28 CEST 2015
System.out.println( Calendar.getInstance().getTime() );
// Mon Sep 28 16:24:51 CEST 2015
System.out.println( new Date(System.currentTimeMillis()) );
// Mon Sep 28
System.out.println( new Date().toString().substring(0, 10) );
// 2015-09-28
System.out.println( new java.sql.Date(System.currentTimeMillis()) );
// 14:32:26
Date d = new Date();
System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 );
// 2015-09-28 17:12:35.584
System.out.println( new Timestamp(System.currentTimeMillis()) );
// Java 8
// 2015-09-28T16:16:23.308+02:00[Europe/Belgrade]
System.out.println( ZonedDateTime.now() );
// Mon, 28 Sep 2015 16:16:23 +0200
System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) );
// 2015-09-28
System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class
// 16
System.out.println( LocalTime.now().getHour() );
// 2015-09-28T16:16:23.315
System.out.println( LocalDateTime.now() );
Antwoord 8, autoriteit 3%
Gebruik:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
System.out.println(timeStamp );
(Het werkt.)
Antwoord 9, autoriteit 2%
Er zijn veel verschillende methoden:
Antwoord 10, autoriteit 2%
Maak een datumobject en druk het eenvoudig af.
Date d = new Date(System.currentTimeMillis());
System.out.print(d);
Antwoord 11
java.util.Date date = new java.util.Date();
Het wordt automatisch gevuld met de tijd waarop het is geïnstantieerd.
Antwoord 12
Vergelijkbaar met bovenstaande oplossingen. Maar ik ben altijd op zoek naar dit stukje code:
Date date=Calendar.getInstance().getTime();
System.out.println(date);
Antwoord 13
Maak voor java.util.Date een nieuwe Date()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
Gebruik voor java.util.Calendar Calendar.getInstance()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43
Gebruik voor java.time.LocalDateTime LocalDateTime.now()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now)); //2016/11/16 12:08:43
Gebruik voor java.time.LocalDate LocalDate.now()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate)); //2016/11/16
Referentie: https ://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/
Antwoord 14
1eDe klasse java.util.Date begrijpen
1.1 Hoe de huidige datum te verkrijgen
import java.util.Date;
class Demostration{
public static void main(String[]args){
Date date = new Date(); // date object
System.out.println(date); // Try to print the date object
}
}
1.2 Hoe getTime() methode te gebruiken
import java.util.Date;
public class Main {
public static void main(String[]args){
Date date = new Date();
long timeInMilliSeconds = date.getTime();
System.out.println(timeInMilliSeconds);
}
}
Dit retourneert het aantal milliseconden sinds 1 januari 1970, 00:00:00 GMT voor tijdvergelijkingsdoeleinden.
1.3 Tijd opmaken met de klasse SimpleDateFormat
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
class Demostration{
public static void main(String[]args){
Date date=new Date();
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
String formattedDate=dateFormat.format(date);
System.out.println(formattedDate);
}
}
Probeer ook verschillende indelingspatronen te gebruiken, zoals “jjjj-MM-dd uu:mm:ss” en selecteer het gewenste patroon. http://docs.oracle.com/javase/7 /docs/api/java/text/SimpleDateFormat.html
2eDe klasse java.util.Calendar begrijpen
2.1 Kalenderklasse gebruiken om de huidige tijdstempel te verkrijgen
import java.util.Calendar;
class Demostration{
public static void main(String[]args){
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime());
}
}
2.2 Probeer setTime en andere instelmethoden te gebruiken om de kalender op een andere datum in te stellen.
Bron: http://javau91.blogspot.com/
Antwoord 15
Heb je java.util.Date bekeken? Het is precies wat je wilt.
Antwoord 16
Java 8 of hoger
LocalDateTime.now() and ZonedDateTime.now()
Antwoord 17
Ik vind dit de beste manier:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22
Antwoord 18
Bekijk de Datumklasse. Er is ook de nieuwere klasse Calendardie is de voorkeursmethode om veel datum-/tijdbewerkingen uit te voeren (veel van de methoden op Date zijn verouderd.)
Als je alleen de huidige datum wilt, maak dan een nieuw Date-object of bel Calendar.getInstance();
.
Antwoord 19
Gebruik:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd::HH:mm:ss");
System.out.println(sdf.format(System.currentTimeMillis()));
De printopdracht drukt de tijd af waarop deze wordt aangeroepen en niet wanneer de SimpleDateFormat
is gemaakt. Het kan dus herhaaldelijk worden aangeroepen zonder nieuwe objecten te maken.
Antwoord 20
Zoals gezegd kan de basis Date() doen wat je nodig hebt om de huidige tijd te krijgen. In mijn recente ervaring met zwaar werken met Java-datums zijn er veel eigenaardigheden met de ingebouwde klassen (evenals de afschaffing van veel van de Date-klasse-methoden). Een eigenaardigheid die me opviel, was dat maanden op een index van 0 zijn gebaseerd, wat vanuit technisch oogpunt logisch is, maar in de praktijk erg verwarrend kan zijn.
Als u zich alleen bezighoudt met de huidige datum, zou dat voldoende moeten zijn – maar als u van plan bent veel te manipuleren/berekeningen met datums te doen, kan het zeer nuttig zijn om een bibliotheek van derden te gebruiken (er zijn er zoveel omdat veel Java-ontwikkelaars niet tevreden met de ingebouwde functionaliteit).
Ik volg de aanbeveling van Stephen C omdat ik Joda-time erg nuttig vond om mijn werk met datums te vereenvoudigen, het is ook zeer goed gedocumenteerd en je kunt veel nuttige voorbeelden op internet vinden. Uiteindelijk heb ik zelfs een statische wrapper-klasse geschreven (als DateUtils) die ik gebruik om al mijn gebruikelijke datummanipulatie te consolideren en te vereenvoudigen.
Antwoord 21
System.out.println( new SimpleDateFormat("yyyy:MM:dd - hh:mm:ss a").format(Calendar.getInstance().getTime()) );
//2018:02:10 - 05:04:20 PM
datum/tijd met AM/PM
Antwoord 22
Nieuwe Data-Time API wordt geïntroduceerd met het aanbreken van Java 8. Dit komt eraan
op de volgende problemen die werden veroorzaakt in de oude data-time API.Moeilijk om met tijdzone om te gaan: je moet veel code schrijven om mee om te gaan
tijdzones.Niet veilig voor threads: java.util.Date is niet veilig voor threads.
Kijk dus eens rond met Java 8
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Month;
public class DataTimeChecker {
public static void main(String args[]) {
DataTimeChecker dateTimeChecker = new DataTimeChecker();
dateTimeChecker.DateTime();
}
public void DateTime() {
// Get the current date and time
LocalDateTime currentTime = LocalDateTime.now();
System.out.println("Current DateTime: " + currentTime);
LocalDate date1 = currentTime.toLocalDate();
System.out.println("Date : " + date1);
Month month = currentTime.getMonth();
int day = currentTime.getDayOfMonth();
int seconds = currentTime.getSecond();
System.out.println("Month : " + month);
System.out.println("Day : " + day);
System.out.println("Seconds : " + seconds);
LocalDateTime date2 = currentTime.withDayOfMonth(17).withYear(2018);
System.out.println("Date : " + date2);
//Prints 17 May 2018
LocalDate date3 = LocalDate.of(2018, Month.MAY, 17);
System.out.println("Date : " + date3);
//Prints 04 hour 45 minutes
LocalTime date4 = LocalTime.of(4, 45);
System.out.println("Date : " + date4);
// Convert to a String
LocalTime date5 = LocalTime.parse("20:15:30");
System.out.println("Date : " + date5);
}
}
Uitvoer van de bovenstaande codering:
Current DateTime: 2018-05-17T04:40:34.603
Date : 2018-05-17
Month : MAY
Day : 17
Seconds : 34
Date : 2018-05-17T04:40:34.603
Date : 2018-05-17
Date : 04:45
Date : 20:15:30
Antwoord 23
Ik heb deze methode gemaakt, het werkt voor mij…
public String GetDay() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd")));
}
public String GetNameOfTheDay() {
return String.valueOf(LocalDateTime.now().getDayOfWeek());
}
public String GetMonth() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM")));
}
public String GetNameOfTheMonth() {
return String.valueOf(LocalDateTime.now().getMonth());
}
public String GetYear() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy")));
}
public boolean isLeapYear(long year) {
return Year.isLeap(year);
}
public String GetDate() {
return GetDay() + "/" + GetMonth() + "/" + GetYear();
}
public String Get12HHour() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("hh")));
}
public String Get24HHour() {
return String.valueOf(LocalDateTime.now().getHour());
}
public String GetMinutes() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("mm")));
}
public String GetSeconds() {
return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("ss")));
}
public String Get24HTime() {
return Get24HHour() + ":" + GetMinutes();
}
public String Get24HFullTime() {
return Get24HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
public String Get12HTime() {
return Get12HHour() + ":" + GetMinutes();
}
public String Get12HFullTime() {
return Get12HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
Antwoord 24
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));
}
}
u kunt datum gebruiken voor actuele gegevens. dus gebruik
SimpleDateFormat
get format
Antwoord 25
Je kunt het Date
object en formaat zelf gebruiken. Het is moeilijk te formatteren en heeft meer codes nodig, bijvoorbeeld
Date dateInstance = new Date();
int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
int date = dateInstance.getDate();
int month = dateInstance.getMonth();
int day = dateInstance.getDay();
int hours = dateInstance.getHours();
int min = dateInstance.getMinutes();
int sec = dateInstance.getSeconds();
String dayOfWeek = "";
switch(day){
case 0:
dayOfWeek = "Sunday";
break;
case 1:
dayOfWeek = "Monday";
break;
case 2:
dayOfWeek = "Tuesday";
break;
case 3:
dayOfWeek = "Wednesday";
break;
case 4:
dayOfWeek = "Thursday";
break;
case 5:
dayOfWeek = "Friday";
break;
case 6:
dayOfWeek = "Saturday";
break;
}
System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
System.out.println("Time: " + hours +":"+ min + ":" + sec);
uitvoer:
Date: 2017-6-23 Sunday
Time: 14:6:20
Zoals je kunt zien is dit de slechtste manier om het te doen en volgens de documentatie van Oracle is het verouderd.
Oracle-document:
De klasse Datum vertegenwoordigt een specifiek moment in de tijd, met milliseconde
precisie.Vóór JDK 1.1 had de klasse Date twee extra functies. Het
stond de interpretatie van datums toe als jaar, maand, dag, uur, minuut,
en tweede waarden. Het maakte ook het formatteren en ontleden van datum mogelijk
snaren. Helaas was de API voor deze functies niet bruikbaar
tot internationalisering. Vanaf JDK 1.1 zou de klasse Calendar moeten zijn
gebruikt om te converteren tussen datum- en tijdvelden en de klasse DateFormat
moet worden gebruikt om datumreeksen op te maken en te ontleden. de overeenkomstige
methoden in Datum zijn verouderd.
Dus als alternatief kunt u Calendar
klasse,
Calendar.YEAR;
//and lot more
Om de huidige tijd te zien, kun je het volgende gebruiken:
Calendar rightNow = Calendar.getInstance();
Doc:
Net als andere locale-gevoelige klassen, biedt
Calendar
een klassenmethode,
getInstance
, voor het verkrijgen van een algemeen bruikbaar object van dit type.
DegetInstance
-methode van Calendar retourneert eenCalendar
-object waarvan de kalender
velden zijn geïnitialiseerd met de huidige datum en tijd
Hieronder code om alleen de datum te krijgen
Date rightNow = Calendar.getInstance().getTime();
System.out.println(rightNow);
Ook de klasse Calendar
heeft subklassen. GregorianCalendar
is een van hen en concrete subklasse van Calendar
en biedt het standaard kalendersysteem dat door het grootste deel van de wereld wordt gebruikt.
Voorbeeld met GregorianCalendar
:
Calendar cal = new GregorianCalendar();
int hours = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int ap = cal.get(Calendar.AM_PM);
String amVSpm;
if(ap == 0){
amVSpm = "AM";
}else{
amVSpm = "PM";
}
String timer = hours + "-" + minute + "-" + second + " " +amVSpm;
System.out.println(timer);
U kunt SimpleDateFormat
, eenvoudige en snelle manier om datum op te maken:
String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);
Lees deze Jakob Jenkov-zelfstudie: Java SimpleDateFormat.
Zoals anderen al zeiden, toen we manipulatie van datums moesten doen, hadden we geen eenvoudige en beste manier of konden we niet tevreden zijn met ingebouwde klassen, API’s.
Als voorbeeld, wanneer we verschillen moeten krijgen tussen twee datums , wanneer we twee datums moeten vergelijken (er is ook een ingebouwde methode hiervoor)en nog veel meer. We moesten bibliotheken van derden gebruiken. Een van de goede en populaire is Joda Time.
Lees ook:
- Hoe u de juiste datum en tijd in Joda-Time?
- JodaTime – hoe u de huidige tijd in UTC kunt krijgen
- Voorbeelden voor
JodaTime
. - Joda downloaden
.
Het gelukkigste is nu (in java 8), dat niemand bibliotheken hoeft te downloaden en te gebruiken om welke reden dan ook. Een eenvoudig voorbeeld om de huidige datum & tijd in Java 8,
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//with time zone
LocalTime localTimeWtZone = LocalTime.now(ZoneId.of("GMT+02:30"));
System.out.println(localTimeWtZone);
Een van de goede blogpost om te lezen over Java 8-datum.
En vergeet niet om meer te weten te komen over de datum en tijd van Java, want er zijn veel meer manieren en/of handige manieren die u kunt krijgen/gebruiken.
BEWERKEN:
Volgens @BasilBourque-opmerking, de lastige oude datum-tijdklassen zoals java.util.Date
, java.util.Calendar
en java.text.SimpleTextFormat
zijn nu legacy, verdrongen door de java.time
klassen.
Antwoord 26
probeer gewoon deze code:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CurrentTimeDateCalendar {
public static void getCurrentTimeUsingDate() {
Date date = new Date();
String strDateFormat = "hh:mm:ss a";
DateFormat dateFormat = new SimpleDateFormat(strDateFormat);
String formattedDate= dateFormat.format(date);
System.out.println("Current time of the day using Date - 12 hour format: " + formattedDate);
}
public static void getCurrentTimeUsingCalendar() {
Calendar cal = Calendar.getInstance();
Date date=cal.getTime();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String formattedDate=dateFormat.format(date);
System.out.println("Current time of the day using Calendar - 24 hour format: "+ formattedDate);
}
}
wat de voorbeelduitvoer is:
Huidige tijd van de dag met datum – 12-uursnotatie: 11:13:01 PM
Huidige tijd van de dag met Kalender – 24-uursnotatie: 23:13:01
meer informatie over:
Huidige datum en tijd ophalen in Java
Antwoord 27
Huidige datum met java 8:
Laten we eerst java.time.LocalDate gebruiken om de huidige systeemdatum te krijgen:
LocalDate localDate = LocalDate.now();
Om de datum in een andere tijdzone te krijgen, kunnen we LocalDate.now(ZoneId) gebruiken:
LocalDate localDate = LocalDate.now(ZoneId.of("GMT+02:30"));
We kunnen ook java.time.LocalDateTime gebruiken om een instantie van LocalDate op te halen:
LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();
Antwoord 28
Ik zal doorgaan en dit antwoord erin gooien, want het is alles wat ik nodig had toen ik dezelfde vraag had:
Date currentDate = new Date(System.currentTimeMillis());
currentDate
is nu uw huidige datum in een Java Date
-object.