Frage

Wenn ich ein neues Date Objekt erstellen, wird es auf die aktuelle Zeit initialisiert, aber in der lokalen Zeitzone. Wie kann ich das aktuelle Datum und die Uhrzeit in GMT bekommen?

War es hilfreich?

Lösung

java.util.Date hat keine bestimmte Zeitzone, obwohl ihr Wert am häufigsten von in Bezug auf UTC gedacht wird. Was macht Sie denken, dass es in Ortszeit ist?

Um genau zu sein: der Wert innerhalb eines java.util.Date ist die Anzahl der Millisekunden seit Beginn der Unix-Epoche, die um Mitternacht 1. Januar 1970, UTC aufgetreten. Die gleiche Epoche könnte auch in anderen Zeitzonen beschrieben werden, aber die traditionelle Beschreibung ist in Bezug auf UTC. Da es eine Anzahl von Millisekunden seit einer festen Epoche ist, ist der Wert innerhalb java.util.Date das gleiche auf der ganzen Welt zu einem bestimmten Augenblick, unabhängig von der lokalen Zeitzone.

Ich vermute, dass das Problem ist, dass man es über eine Instanz des Kalenders ist Anzeigen, die die lokale Zeitzone verwendet, oder möglicherweise Date.toString() verwendet, die auch die lokale Zeitzone verwendet, oder eine SimpleDateFormat Instanz, die in der Standardeinstellung auch lokale Zeitzone verwendet .

Wenn dies nicht das Problem ist, bitte einig Beispiel-Code schreiben.

Ich würde jedoch empfehlen, dass Sie Joda-Time verwenden sowieso, was eine bietet viel klarer API.

Andere Tipps

SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));

//Local time zone   
SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");

//Time in GMT
return dateFormatLocal.parse( dateFormatGmt.format(new Date()) );

tl; dr

Instant.now()   // Capture the current moment in UTC. 

einen String erzeugen, den Wert darzustellen:

Instant.now().toString()  
  

2016-09-13T23: 30: 52.123Z

Details

Wie angegeben , ein java.util.Date Objekt hat keine Zeitzone . Aber seine toString Implementierung gilt den Standard-Zeitzone des JVM, wenn die Stringdarstellung dieses Datum Zeitwert zu erzeugen. Verwirrend an den naiven Programmierer, ein Datum scheint eine Zeitzone zu haben, aber nicht.

Die java.util.Date, j.u.Calendar und java.text.SimpleDateFormat Klassen gebündelt mit Java sind notorisch schwierig. Sie vermeiden Stattdessen Datum Zeitbibliotheken entweder dieser zuständigen benutzen.

java.time (Java 8)

Java 8 bringt ein hervorragend neu java.time. * Paket die alte java.util.Date/Calendar zu verdrängen Klassen.

aktuelle Uhrzeit in UTC Ersten / GMT ist ein einfacher Einzeiler ...

Instant instant = Instant.now();

Das Instant -Klasse ist die Basis Baustein in java.time, mit einer Auflösung von UTC auf der Timeline in ns .

In Java 8 wird der aktuelle Moment mit nur bis zu Millisekunden Auflösung erfaßt. Java 9 bringt eine frische Implementierung von fängt Clock den aktuellen Moment in der vollen Nanosekunde Fähigkeit dieser Klasse auf, auf die je Fähigkeit Ihrer Uhr Hardware des Host-Computers.

Es ist toString Methode eine String-Darstellung ihres Wertes erzeugt mit eine bestimmte ISO 8601 . Dass Format Ausgänge null, drei, sechs oder neun Ziffern Ziffern ( Millisekunden , Mikrosekunden oder ns ), wie notwendig, um die Fraktion-of-Sekunden darzustellen.

Wenn Sie flexiblere Formatierung mögen, oder andere zusätzliche Funktionen und wendet dann die Offset-von-UTC von Null, für UTC selbst ( ZoneOffset.UTC konstant ) ein OffsetDateTime .

OffsetDateTime now = OffsetDateTime.now( ZoneOffset.UTC );

Dump zu trösten ...

System.out.println( "now: " + now );

Wenn er gestartet wird ...

now: 2014-01-21T23:42:03.522Z

Table of Typen Datum Zeitklassen in der modernen java.time gegen Vermächtnis.

Die java.time Klassen werden von JSR 310 definiert. Sie wurden von Joda-Time inspiriert sind aber völlig rE-architected.

Joda-Time

UPDATE: Das Joda-Time Projekt nun in Wartungsmodus , rät Migration auf die java.time Klassen.

Mit dem Joda-Time 3rd-Party-Open-Source-free-of-Cost-Bibliothek , können Sie das aktuelle Datum-Zeit in nur einer Zeile Code bekommen.

Joda-Time inspirierte die neue java.time. * Klassen in Java 8, hat aber eine andere Architektur. Sie können Joda-Time in älteren Versionen von Java verwenden. Joda-Time weiterhin in Java 8 arbeiten und weiterhin aktiv gehalten wird (Stand: 2014). Allerdings ist die Joda-Time Team Migration java.time beraten.

System.out.println( "UTC/GMT date-time in ISO 8601 format: " + new org.joda.time.DateTime( org.joda.time.DateTimeZone.UTC ) );

Weitere ausführlicher Beispielcode (Joda-Time 2.3) ...

org.joda.time.DateTime now = new org.joda.time.DateTime(); // Default time zone.
org.joda.time.DateTime zulu = now.toDateTime( org.joda.time.DateTimeZone.UTC );

Dump zu trösten ...

System.out.println( "Local time in ISO 8601 format: " + now );
System.out.println( "Same moment in UTC (Zulu): " + zulu );

Wenn er gestartet wird ...

Local time in ISO 8601 format: 2014-01-21T15:34:29.933-08:00
Same moment in UTC (Zulu): 2014-01-21T23:34:29.933Z

Für weiteren Beispiel-Code Zeitzone Arbeit zu tun, finden Sie unter meine Antwort auf eine ähnliche Frage.

Zeitzone

Ich empfehle Ihnen immer eine Zeitzone angeben, anstatt implizit auf die aktuelle Standard-Zeitzone des JVM unter Berufung (die sich jederzeit ändern können!). Ein solches Vertrauen scheint eine häufige Ursache für Verwirrung und Fehler in Datum Zeitarbeit zu sein.

Beim Aufruf now() die gewünschte / erwartete Zeitzone passiert zugewiesen werden. Verwenden Sie die DateTimeZone Klasse.

DateTimeZone zoneMontréal = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zoneMontréal );

Diese Klasse hat einen Konstante für UTC Zeitzone.

DateTime now = DateTime.now( DateTimeZone.UTC );

Wenn Sie wirklich die JVM die aktuelle Standard-Zeitzone verwenden möchten, einen expliziten Aufruf machen, damit Ihr Code selbsterklärend ist.

DateTimeZone zoneDefault = DateTimeZone.getDefault();

ISO 8601

Lesen Sie mehr über ISO 8601 Formate. Sowohl java.time sowie Joda-Time verwenden, die Standard vernünftige Formate wie ihre Vorgaben für beide Parsen und Strings zu erzeugen.


Eigentlich java.util.Date hat eine Zeitzone hat, tief begraben unter Schichten von Quellcode. Für die meisten praktischen Zwecke ist die Zeitzone ignoriert. So, wie Stenografie, sagen wir java.util.Date keine Zeitzone hat. Darüber hinaus ist die vergrabene Zeitzone nicht derjenige von Datum der toString Verfahren verwendet wird; diese Methode verwendet die aktuelle Standard-Zeitzone des JVM. Umso mehr Grund, diese verwirrende Klasse zu vermeiden und hält mit Joda-Time und java.time.

Dies ist definitiv zurück UTC-Zeit: als String und Date-Objekte

!
static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

public static Date getUTCdatetimeAsDate() {
    // note: doesn't check for null
    return stringDateToDate(getUTCdatetimeAsString());
}

public static String getUTCdatetimeAsString() {
    final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    final String utcTime = sdf.format(new Date());

    return utcTime;
}

public static Date stringDateToDate(String StrDate) {
    Date dateToReturn = null;
    SimpleDateFormat dateFormat = new SimpleDateFormat(DATEFORMAT);

    try {
        dateToReturn = (Date)dateFormat.parse(StrDate);
    }
    catch (ParseException e) {
        e.printStackTrace();
    }

    return dateToReturn;
}
    Calendar c = Calendar.getInstance();
    System.out.println("current: "+c.getTime());

    TimeZone z = c.getTimeZone();
    int offset = z.getRawOffset();
    if(z.inDaylightTime(new Date())){
        offset = offset + z.getDSTSavings();
    }
    int offsetHrs = offset / 1000 / 60 / 60;
    int offsetMins = offset / 1000 / 60 % 60;

    System.out.println("offset: " + offsetHrs);
    System.out.println("offset: " + offsetMins);

    c.add(Calendar.HOUR_OF_DAY, (-offsetHrs));
    c.add(Calendar.MINUTE, (-offsetMins));

    System.out.println("GMT Time: "+c.getTime());

Eigentlich keine Zeit, aber es ist Darstellung geändert werden.

SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(f.format(new Date()));

Die Zeit ist das gleiche in jedem Punkt der Erde, aber unsere Wahrnehmung von Zeit anders sein könnte, je nach Lage.

  

Kalender aGMTCalendar = Calendar.getInstance (TimeZone.getTimeZone ( "GMT"));   Dann erfolgt alle Operationen des aGMTCalendar-Objekt wird mit der GMT Zeitzone durchgeführt werden und wird nicht die Sommerzeit oder feste Offsets angewendet

Falsch!

Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
aGMTCalendar.getTime(); //or getTimeInMillis()

und

Calendar aNotGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT-2"));aNotGMTCalendar.getTime();

wird die gleiche Zeit zurück. Idem für

new Date(); //it's not GMT.

Dieser Code druckt die aktuelle Uhrzeit UTC.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;


public class Test
{
    public static void main(final String[] args) throws ParseException
    {
        final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
        f.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println(f.format(new Date()));
    }
}

Ergebnis

2013-10-26 14:37:48 UTC

Dies funktioniert für UTC Millisekunden in Android bekommen.

Calendar c = Calendar.getInstance();
int utcOffset = c.get(Calendar.ZONE_OFFSET) + c.get(Calendar.DST_OFFSET);  
Long utcMilliseconds = c.getTimeInMillis() + utcOffset;

Hier ist, was in Jon Skeet Antwort falsch zu sein scheint. Er sagte:

  

java.util.Date ist immer in UTC. Was macht Sie denken, es in lokalen ist   Zeit? Ich vermute, dass das Problem ist, dass man es über eine Anzeige ist   Instanz von Kalender, die die lokale Zeitzone verwendet, oder möglicherweise mit   Date.toString() die auch die lokale Zeitzone verwendet.

Allerdings ist der Code:

System.out.println(new java.util.Date().getHours() + " hours");

gibt die lokalen Stunden, nicht GMT (UTC Stunden), ohne Verwendung eines Calendar und keine SimpleDateFormat überhaupt.

Aus diesem Grund scheint ist etwas falsch ist.

Setzt man die Antworten zusammen, der Code:

System.out.println(Calendar.getInstance(TimeZone.getTimeZone("GMT"))
                           .get(Calendar.HOUR_OF_DAY) + " Hours");

zeigt die GMT Stunden statt der lokalen Stunden - das getTime.getHours() beachten fehlt, weil das ein Date() Objekt schaffen würde, die theoretisch das Datum in GMT speichert, aber die Stunden in der lokalen Zeitzone gibt zurück

.

Wenn Sie ein Date-Objekt mit Feldern für UTC eingestellt wollen Sie es so mit Joda Zeit :

import org.joda.time.DateTimeZone;
import java.util.Date;

...

Date local = new Date();
System.out.println("Local: " + local);
DateTimeZone zone = DateTimeZone.getDefault();
long utc = zone.convertLocalToUTC(local.getTime(), false);
System.out.println("UTC: " + new Date(utc));

Sie können mit:

Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

Dann erfolgten alle Operationen des aGMTCalendar-Objekt wird mit der GMT Zeitzone durchgeführt wird und werden nicht haben angewandt, um die Sommerzeit oder feste Offsets. Ich denke, die vorher bereits richtig ist, dass das Date () Objekt gibt immer einen GMT ist es nicht, bis Sie gehen, um etwas mit dem Date-Objekt zu tun, dass es in der lokalen Zeitzone umgewandelt wird.

SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MM-dd");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormatGmt.format(date));

Sie können diese direkt verwenden

SimpleDateFormat dateFormatGmt = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormatGmt.format(new Date())+"");

Mit:

Calendar cal = Calendar.getInstance();

Dann das aktuelle Datum und die Uhrzeit cal haben.
Sie können auch das aktuelle Datum und Zeit für Zeitzone erhalten mit:

Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT-2"));

Sie könnten cal.get(Calendar.DATE); oder andere Kalender konstant über andere Details fragen.
Datum und Zeitstempel werden in Java veraltet. Calendar-Klasse ist es nicht.

Hier ist ein anderer Vorschlag, ein GMT-Zeitstempel-Objekt zu erhalten:

import java.sql.Timestamp;
import java.util.Calendar;

...

private static Timestamp getGMT() {
   Calendar cal = Calendar.getInstance();
   return new Timestamp(cal.getTimeInMillis()
                       -cal.get(Calendar.ZONE_OFFSET)
                       -cal.get(Calendar.DST_OFFSET));
}

Hier ist eine andere Art und Weise GMT-Zeit in String-Format

zu bekommen
String DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z" ;
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String dateTimeString =  sdf.format(new Date());

Beispielcode Systemzeit in einer bestimmten Zeitzone und ein bestimmtes Format zu machen.

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class TimZoneTest {
    public static void main (String[] args){
        //<GMT><+/-><hour>:<minutes>
        // Any screw up in this format, timezone defaults to GMT QUIETLY. So test your format a few times.

        System.out.println(my_time_in("GMT-5:00", "MM/dd/yyyy HH:mm:ss") );
        System.out.println(my_time_in("GMT+5:30", "'at' HH:mm a z 'on' MM/dd/yyyy"));

        System.out.println("---------------------------------------------");
        // Alternate format 
        System.out.println(my_time_in("America/Los_Angeles", "'at' HH:mm a z 'on' MM/dd/yyyy") );
        System.out.println(my_time_in("America/Buenos_Aires", "'at' HH:mm a z 'on' MM/dd/yyyy") );


    }

    public static String my_time_in(String target_time_zone, String format){
        TimeZone tz = TimeZone.getTimeZone(target_time_zone);
        Date date = Calendar.getInstance().getTime();
        SimpleDateFormat date_format_gmt = new SimpleDateFormat(format);
        date_format_gmt.setTimeZone(tz);
        return date_format_gmt.format(date);
    }

}

Output

10/08/2011 21:07:21
at 07:37 AM GMT+05:30 on 10/09/2011
at 19:07 PM PDT on 10/08/2011
at 23:07 PM ART on 10/08/2011

Sie einfach diese einfacher zu machen, eine Date in UTC erstellen Sie Calendar :

Calendar.getInstance(TimeZone.getTimeZone("UTC"));

, die eine neue Instanz für Calendar bauen die "UTC" TimeZone verwendet wird.

Wenn Sie eine Date Objekt aus diesem Kalender, den Sie gerade getTime() nutzen könnten.

Konvertieren Aktuelle Datetime in UTC:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

DateTimeZone dateTimeZone = DateTimeZone.getDefault(); //Default Time Zone

DateTime currDateTime = new DateTime(); //Current DateTime

long utcTime = dateTimeZone.convertLocalToUTC(currDateTime .getMillis(), false);

String currTime = formatter.print(utcTime); //UTC time converted to string from long in format of formatter

currDateTime = formatter.parseDateTime(currTime); //Converted to DateTime in UTC

Hier ist meine Implementierung von toUTC:

    public static Date toUTC(Date date){
    long datems = date.getTime();
    long timezoneoffset = TimeZone.getDefault().getOffset(datems);
    datems -= timezoneoffset;
    return new Date(datems);
}

Es gibt wahrscheinlich mehr Möglichkeiten, es zu verbessern, aber es funktioniert für mich.

Das ist für mich gearbeitet, gibt den Zeitstempel in GMT!

    Date currDate;
    SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
    dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
    SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");

    long currTime = 0;
    try {

        currDate = dateFormatLocal.parse( dateFormatGmt.format(new Date()) );
        currTime = currDate.getTime();
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

diese Klasse verwendet immer die richtige UTC-Zeit von einem Online NTP Server zu erhalten:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;


class NTP_UTC_Time
{
private static final String TAG = "SntpClient";

private static final int RECEIVE_TIME_OFFSET = 32;
private static final int TRANSMIT_TIME_OFFSET = 40;
private static final int NTP_PACKET_SIZE = 48;

private static final int NTP_PORT = 123;
private static final int NTP_MODE_CLIENT = 3;
private static final int NTP_VERSION = 3;

// Number of seconds between Jan 1, 1900 and Jan 1, 1970
// 70 years plus 17 leap days
private static final long OFFSET_1900_TO_1970 = ((365L * 70L) + 17L) * 24L * 60L * 60L;

private long mNtpTime;

public boolean requestTime(String host, int timeout) {
    try {
        DatagramSocket socket = new DatagramSocket();
        socket.setSoTimeout(timeout);
        InetAddress address = InetAddress.getByName(host);
        byte[] buffer = new byte[NTP_PACKET_SIZE];
        DatagramPacket request = new DatagramPacket(buffer, buffer.length, address, NTP_PORT);

        buffer[0] = NTP_MODE_CLIENT | (NTP_VERSION << 3);

        writeTimeStamp(buffer, TRANSMIT_TIME_OFFSET);

        socket.send(request);

        // read the response
        DatagramPacket response = new DatagramPacket(buffer, buffer.length);
        socket.receive(response);          
        socket.close();

        mNtpTime = readTimeStamp(buffer, RECEIVE_TIME_OFFSET);            
    } catch (Exception e) {
      //  if (Config.LOGD) Log.d(TAG, "request time failed: " + e);
        return false;
    }

    return true;
}


public long getNtpTime() {
    return mNtpTime;
}


/**
 * Reads an unsigned 32 bit big endian number from the given offset in the buffer.
 */
private long read32(byte[] buffer, int offset) {
    byte b0 = buffer[offset];
    byte b1 = buffer[offset+1];
    byte b2 = buffer[offset+2];
    byte b3 = buffer[offset+3];

    // convert signed bytes to unsigned values
    int i0 = ((b0 & 0x80) == 0x80 ? (b0 & 0x7F) + 0x80 : b0);
    int i1 = ((b1 & 0x80) == 0x80 ? (b1 & 0x7F) + 0x80 : b1);
    int i2 = ((b2 & 0x80) == 0x80 ? (b2 & 0x7F) + 0x80 : b2);
    int i3 = ((b3 & 0x80) == 0x80 ? (b3 & 0x7F) + 0x80 : b3);

    return ((long)i0 << 24) + ((long)i1 << 16) + ((long)i2 << 8) + (long)i3;
}

/**
 * Reads the NTP time stamp at the given offset in the buffer and returns 
 * it as a system time (milliseconds since January 1, 1970).
 */    
private long readTimeStamp(byte[] buffer, int offset) {
    long seconds = read32(buffer, offset);
    long fraction = read32(buffer, offset + 4);
    return ((seconds - OFFSET_1900_TO_1970) * 1000) + ((fraction * 1000L) / 0x100000000L);        
}

/**
 * Writes 0 as NTP starttime stamp in the buffer. --> Then NTP returns Time OFFSET since 1900
 */    
private void writeTimeStamp(byte[] buffer, int offset) {        
    int ofs =  offset++;

    for (int i=ofs;i<(ofs+8);i++)
      buffer[i] = (byte)(0);             
}

}

Und verwenden Sie es mit:

        long now = 0;

        NTP_UTC_Time client = new NTP_UTC_Time();

        if (client.requestTime("pool.ntp.org", 2000)) {              
          now = client.getNtpTime();
        }

Wenn Sie UTC-Zeit "jetzt" als DateTimeString Verwendung Funktion:

private String get_UTC_Datetime_from_timestamp(long timeStamp){

    try{

        Calendar cal = Calendar.getInstance();
        TimeZone tz = cal.getTimeZone();

        int tzt = tz.getOffset(System.currentTimeMillis());

        timeStamp -= tzt;

        // DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.getDefault());
        DateFormat sdf = new SimpleDateFormat();
        Date netDate = (new Date(timeStamp));
        return sdf.format(netDate);
    }
    catch(Exception ex){
        return "";
     }
    } 

und verwenden Sie es mit:

String UTC_DateTime = get_UTC_Datetime_from_timestamp(now);
public static void main(String args[]){
    LocalDate date=LocalDate.now();  
    System.out.println("Current date = "+date);
}

Um es einfach zu setzen. Ein Kalenderobjekt speichert Informationen über Zeitzone, aber wenn man cal.getTime () dann die Zeitzone Informationen verloren zuführen. Also für Zeitzone Conversions Ich rate Dateformat-Klassen verwenden ...

Das ist meine Implementierung:

public static String GetCurrentTimeStamp()
{
    Calendar cal=Calendar.getInstance();
    long offset = cal.getTimeZone().getOffset(System.currentTimeMillis());//if you want in UTC else remove it .
    return new java.sql.Timestamp(System.currentTimeMillis()+offset).toString();    
}

Wenn Sie das Datum vermeiden wollen, Parsen und wollen einfach nur einen Zeitstempel in GMT, könnten Sie verwenden:

final Date gmt = new Timestamp(System.currentTimeMillis()
            - Calendar.getInstance().getTimeZone()
                    .getOffset(System.currentTimeMillis()));

Wenn Sie joda Zeit verwenden und wollen die aktuelle Zeit in Millisekunden ohne Ihre lokalen Offset können Sie verwenden:

long instant = DateTimeZone.UTC.getMillisKeepLocal(DateTimeZone.getDefault(), System.currentTimeMillis());
public class CurrentUtcDate 
{
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println("UTC Time is: " + dateFormat.format(date));
    }
}

Ausgabe:

UTC Time is: 22-01-2018 13:14:35

Sie können das Datumsformat ändern je nach Bedarf.

Verwenden Sie java.time Paket und umfasst unter Code -

ZonedDateTime now = ZonedDateTime.now( ZoneOffset.UTC );

oder

LocalDateTime now2 = LocalDateTime.now( ZoneOffset.UTC );

Je nach Anwendung benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top