Hoe de huidige datum/tijd in Java te krijgen

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 Java long). 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 een Dateobject, geïnitialiseerd met de huidige datum/tijd. Het probleem is dat de DateAPI-methoden meestal gebrekkig zijn … en verouderd.

    • Calendar.getInstance()geeft u een Calendar-object dat is geïnitialiseerd met de huidige datum/tijd, met behulp van de standaard Localeen TimeZone. Bij andere overbelastingen kunt u een specifieke Localeen/of TimeZonegebruiken. 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()en java.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.timeaanbevolen. 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.

voer hier de afbeeldingsbeschrijving in

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 Instantklasse. 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 Instantaanpassen aan andere tijdzones. Pas een ZoneIdbezwaar om een ​​ZonedDateTimete krijgen .

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

We kunnen de Instantoverslaan en de huidige ZonedDateTimedirect 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 Instantextraheren uit de ZonedDateTime.

Instant instant = zdt.toInstant();

Gebruik altijd een Instantof ZonedDateTimein plaats van een LocalDateTimewanneer 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 ZonedDateTimeen het daardoor zinvol te maken.

LocalDate

De LocalDateklasse 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 toStringaan 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 ZonedDateTimebreidt 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 DateTimeFormatterklasse.

Vermijd LocalDateTime

In tegenstelling tot de opmerking over de vraag van RamanSB, moet u geengebruiken LocalDateTimeklasse voor de huidige datum-tijd.

De LocalDateTimeheeft 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 LocalDateTimeheeft 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.

foto van een paar externe radioklokapparaten

java.time.Clock

Als u een alternatieve leverancier van het huidige moment wilt gebruiken, schrijft u een subklasse van de abstracte java.time.Clockklasse.

U kunt uw Clockimplementatie 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 Clockdie statisch beschikbaar zijn vanaf Clockzelf: 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?

Tabel met welke java.time-bibliotheek moet worden gebruikt met welke versie van Java of Android

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, YearQuarteren 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 SimpleDateFormatis 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 SimpleDateFormatget format


Antwoord 25

Je kunt het Dateobject 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 Calendarklasse,

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 Calendareen klassenmethode,
getInstance, voor het verkrijgen van een algemeen bruikbaar object van dit type.
De getInstance-methode van Calendar retourneert een Calendar-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 Calendarheeft subklassen. GregorianCalendaris een van hen en concrete subklasse van Calendaren 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:

.
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.Calendaren java.text.SimpleTextFormatzijn nu legacy, verdrongen door de java.timeklassen.


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

currentDateis nu uw huidige datum in een Java Date-object.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

20 + two =

Other episodes