Wie kann ich das aktuelle Datum und die aktuelle Uhrzeit in UTC oder GMT in Java abrufen?

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

java.util.Date hat keine spezifische Zeitzone, obwohl der Wert in Bezug auf UTC am häufigsten angenommen wird. Was lässt dich denken, dass es in der Ortszeit ist?

Um genau zu sein: Der Wert in einem java.util.Date ist die Anzahl der Millisekunden seit der Unix-Epoche, die um Mitternacht des 1. Januar 1970, UTC, erfolgte. Dieselbe Epoche könnte auch in anderen Zeitzonen beschrieben werden, aber die traditionelle Beschreibung bezieht sich auf UTC. Da es sich um eine Anzahl von Millisekunden seit einer festen Epoche handelt, ist der Wert innerhalb von java.util.Date zu jedem Zeitpunkt weltweit gleich, unabhängig von der lokalen Zeitzone.

Ich vermute, das Problem besteht darin, dass Sie es über eine Instanz von Calendar anzeigen, die die lokale Zeitzone verwendet oder möglicherweise Date.toString() das auch die lokale Zeitzone verwendet, oder eine SimpleDateFormat Instanz, die standardmäßig auch local verwendet Zeitzone.

Wenn dies nicht das Problem ist, senden Sie bitte einen Beispielcode.

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

 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. 

Generiere einen String, um diesen Wert darzustellen:

 Instant.now().toString() 

2016-09-13T23: 30: 52.123Z

Einzelheiten

Wie die korrekte Antwort von Jon Skeet sagte, hat ein Objekt java.util.Date keine Zeitzone . Seine toString Implementierung wendet jedoch die Standardzeitzone der JVM an, wenn die String-Darstellung dieses Datums- / toString generiert wird. Verwirrend für den naiven Programmierer scheint ein Date eine Zeitzone zu haben, tut es aber nicht.

Die Java-classn java.util.Date , juCalendar und java.text.SimpleDateFormat sind bekanntermaßen mühsam. Vermeide sie. Verwenden Sie stattdessen eine dieser kompetenten Datum-Uhrzeit-Bibliotheken:

  • java.time. * Paket in Java 8
  • Joda-Zeit

java.time (Java 8)

Java 8 bringt ein ausgezeichnetes neues Paket java.time. *, Um die alten classn java.util.Date/Calendar zu ersetzen.

Die aktuelle Zeit in UTC / GMT zu bekommen, ist ein einfacher Einzeiler …

 Instant instant = Instant.now(); 

Diese Instant class ist der grundlegende Baustein in java.time, der einen Moment auf der Timeline in UTC mit einer Auflösung von Nanosekunden darstellt .

In Java 8 wird der aktuelle Moment mit einer Auflösung von nur bis zu Millisekunden erfasst. Java 9 bringt eine neue Implementierung von Clock die den aktuellen Moment in bis zu der vollen Nanosekunden-Fähigkeit dieser class erfasst, abhängig von der Fähigkeit der Uhr-Hardware Ihres Host-Computers.

Die toString Methode generiert eine String-Repräsentation ihres Werts mit einem bestimmten ISO 8601-Format . Dieses Format gibt null-, drei-, sechs- oder neunstellige Ziffern ( Millisekunden , Mikrosekunden oder Nanosekunden ) aus, um den Bruchteil der Sekunde darzustellen.

Wenn Sie eine flexiblere Formatierung, Anpassungen in oder aus verschiedenen Zeitzonen oder andere zusätzliche functionen ZoneId , wenden Sie eine Zeitzone ( ZoneId Objekt) an, um eine ZonedDateTime . Die Zeitzone kann für UTC oder eine andere Zeitzone sein. Die Unterklasse von ZoneId , ZoneOffset enthält eine Konstante für UTC .

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

Dump zur Konsole …

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

Wenn es läuft …

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

Die classn java.time werden von JSR 310 definiert. Sie wurden von Joda-Time inspiriert, sind aber komplett neu gestaltet.

Joda-Zeit

UPDATE: Das Joda-Time- Projekt, jetzt im Wartungsmodus , rät zur Migration in die java.time- classn.

Mit der frei zugänglichen Joda-Time -Open-Source-Bibliothek von Drittherstellern können Sie das aktuelle Datum in nur einer Codezeile abrufen.

Joda-Time hat die neuen java.time. * – classn in Java 8 inspiriert, hat aber eine andere Architektur. Sie können Joda-Time in älteren Versionen von Java verwenden. Joda-Time arbeitet weiterhin in Java 8 und wird weiterhin aktiv gepflegt (Stand 2014). Das Joda-Time-Team empfiehlt jedoch die Migration zu java.time.

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

Ausführlicherer 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 zur Konsole …

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

Wenn es läuft …

 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 mehr Beispielcode, der Zeitzone arbeitet, sehen Sie meine Antwort auf eine ähnliche Frage.

Zeitzone

Ich empfehle Ihnen, immer eine Zeitzone anzugeben, anstatt sich implizit auf die aktuelle Standardzeitzone der JVM zu verlassen (die sich jederzeit ändern kann!). Ein solches Vertrauen scheint eine häufige Ursache von Verwirrung und Fehlern in der Date-Time-Arbeit zu sein.

Wenn Sie now() anrufen now() übergeben Sie die gewünschte / erwartete Zeitzone, die zugewiesen werden soll. Verwenden Sie die DateTimeZone class.

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

Diese class enthält eine Konstante für die UTC- Zeitzone.

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

Wenn Sie die aktuelle Standardzeitzone der JVM wirklich verwenden möchten, führen Sie einen expliziten Aufruf aus, damit Ihr Code selbstdokumentiert ist.

 DateTimeZone zoneDefault = DateTimeZone.getDefault(); 

ISO 8601

Lesen Sie über ISO 8601- Formate. Sowohl java.time als auch Joda-Time verwenden die sinnvollen Formate dieses Standards als Standard für das Parsen und Erzeugen von Strings.


Tatsächlich hat java.util.Date eine Zeitzone, die tief unter Schichten des Quellcodes vergraben ist. Für die meisten praktischen Zwecke wird diese Zeitzone ignoriert. Kurz gesagt, wir sagen, java.util.Date hat keine Zeitzone. Außerdem ist diese vergrabene Zeitzone nicht die von toString Methode von Date; Diese Methode verwendet die aktuelle Standardzeitzone der JVM. Umso mehr Grund, diese verwirrende class zu vermeiden und bei Joda-Time und java.time zu bleiben.

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

 static final String DATEFORMAT = "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(DATEFORMAT); 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 die Darstellung könnte 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 an jedem Punkt der Erde gleich, aber unsere Wahrnehmung der Zeit könnte je nach Standort unterschiedlich sein.

Kalender aGMTCalendar = Calendar.getInstance (TimeZone.getTimeZone (“GMT”)); Dann werden alle Operationen, die mit dem Objekt “aGMTCalendar” ausgeführt werden, mit der GMT-Zeitzone ausgeführt, und es wird keine 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ückgeben. Idem für

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

Dieser Code gibt die aktuelle Zeit UTC aus.

 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, um UTC Millisekunden in Android zu erhalten.

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

Jon Skeet fragt:

@Downvoter: Möchten Sie kommentieren? Was genau ist falsch in meiner Antwort? – Jon Skeet 26. Oktober 09 um 21:09 Uhr

Ich bin nicht der Downvoter, aber hier scheint etwas falsch zu sein in dieser Antwort. Du sagtest:

java.util.Date ist immer in UTC. Was lässt dich denken, dass es in der Ortszeit ist? Ich vermute, das Problem besteht darin, dass Sie es über eine Instanz von Calendar anzeigen, die die lokale Zeitzone verwendet, oder möglicherweise Date.toString() das auch die lokale Zeitzone verwendet.

Der Code jedoch:

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

gibt die lokalen Stunden, nicht GMT (UTC-Stunden), ohne Calendar und ohne SimpleDateFormat .

Deshalb scheint etwas falsch zu sein.

Zusammenstellen der Antworten, der Code:

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

zeigt die GMT-Stunden anstelle der lokalen Stunden an – beachte, dass getTime.getHours() fehlt, da dies ein Date() -Objekt erzeugen würde, das theoretisch das Datum in GMT speichert, aber die Stunden in der lokalen Zeitzone zurückgibt.

Wenn Sie ein Date-Objekt mit UTC-angepassten Feldern möchten, können Sie das mit Joda Time machen :

 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 verwenden:

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

Dann werden alle Operationen, die mit dem Objekt “aGMTCalendar” ausgeführt werden, mit der GMT-Zeitzone ausgeführt, und es wird keine Sommerzeit oder feste Offsets angewendet. Ich denke, das vorherige Poster ist korrekt, dass das Date () -Objekt immer eine GMT zurückgibt. Erst wenn Sie etwas mit dem Date-Objekt machen, wird es in die lokale Zeitzone konvertiert.

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

Mit:

 Calendar cal = Calendar.getInstance(); 

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

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

Sie könnten fragen cal.get(Calendar.DATE); oder andere Kalenderkonstante über andere Details.
Datum und Zeitstempel sind in Java veraltet. Kalenderklasse ist es nicht.

Hier ein weiterer Vorschlag, um ein GMT Timestamp-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 weitere Möglichkeit, GMT-Zeit im String-Format zu erhalten

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

Sie können dies direkt nutzen

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

Um dies einfacher zu machen, können Sie ein Date in UTC erstellen:

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

Welche erstellt eine neue Instanz für Calendar mit der Zeitzone “UTC”.

Wenn Sie ein Date Objekt aus diesem Kalender benötigen, können Sie einfach getTime() .

Beispielcode zum Rendern der Systemzeit in einer bestimmten Zeitzone und in einem bestimmten Format.

 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){ //< +/->: // 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 az 'on' MM/dd/yyyy")); System.out.println("---------------------------------------------"); // Alternate format System.out.println(my_time_in("America/Los_Angeles", "'at' HH:mm az 'on' MM/dd/yyyy") ); System.out.println(my_time_in("America/Buenos_Aires", "'at' HH:mm az '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); } } 

Ausgabe

 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 

Konvertieren der aktuellen 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 

Das funktionierte für mich, gibt den Zeitstempel in GMT zurück!

  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(); } 
 public static void main(String args[]){ LocalDate date=LocalDate.now(); System.out.println("Current date = "+date); } 

Um es einfach zu sagen. Ein Kalenderobjekt speichert Informationen zur Zeitzone, aber wenn Sie cal.getTime () ausführen, gehen die Zeitzoneninformationen verloren. Für Zeitzonen-Conversions rate ich daher, DateFormat-classn zu verwenden …

Verwenden Sie diese class, um 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 benutze 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-Use-function benötigen:

 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 benutze es mit:

 String UTC_DateTime = get_UTC_Datetime_from_timestamp(now); 

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 mehrere Möglichkeiten, es zu verbessern, aber es funktioniert für mich.

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 joda time verwenden und die aktuelle Zeit in Millisekunden ohne Ihren lokalen Offset haben möchten, können Sie dies verwenden:

 long instant = DateTimeZone.UTC.getMillisKeepLocal(DateTimeZone.getDefault(), System.currentTimeMillis()); 

Wenn Sie vermeiden möchten, das Datum zu analysieren und nur einen Zeitstempel in GMT möchten, könnten Sie Folgendes verwenden:

 final Date gmt = new Timestamp(System.currentTimeMillis() - Calendar.getInstance().getTimeZone() .getOffset(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 nach Bedarf ändern.