- Converting Date and Time between Timezones
- Java Convert ZonedDateTime to Timestamp
- How to convert ZonedDateTime to Timestamp in Java
- Как получить текущие метки времени в Java
- 1. Примеры временных меток Java
- 2. Мгновенное преобразование в/из метки времени
- 3. Вставить метку времени в таблицу
- 4. Рекомендации
- Читайте ещё по теме:
- Как получить текущие метки времени в Java
- 1. Примеры временных меток Java
- 2. Мгновенное преобразование в/из метки времени
- 3. Вставить метку времени в таблицу
- 4. Рекомендации
- Читайте ещё по теме:
Converting Date and Time between Timezones
Learn to convert a given date-time object from one timezone to another timezone. We will see the examples using ZonedDateTime , Date and Calendar classes.
1. Changing Timezones of ZonedDateTime
In Java 8, date and time with timezone information is represented with ZonedDateTime . To convert a ZonedDateTime instance from one timezone to another, follow the two steps:
- Create ZonedDateTime in 1st timezone. You may already have it in your application.
- Convert the first ZonedDateTime in second timezone using withZoneSameInstant() method.
ZonedDateTime instant = ZonedDateTime.now(); System.out.println(instant); ZonedDateTime instantInUTC = instant.withZoneSameInstant(ZoneId.of("UTC")); System.out.println(instantInUTC);
2022-02-16T18:36:14.509742500+05:30[Asia/Calcutta] 2022-02-16T13:06:14.509742500Z[UTC]
2. Changing Timezones of OffsetDateTime
Similar to ZonedDateTime, OffsetDateTime also represents an instant in universal timeline with an offset from UTC/Greenwich in the ISO-8601 calendar system. To convert a OffsetDateTime instance from one timezone to another, follow the two steps:
- Create OffsetDateTime in 1st timezone. You may already have it in your application.
- Convert the first OffsetDateTime in second timezone using withOffsetSameInstant() method.
OffsetDateTime now = OffsetDateTime.now(); System.out.println(now); OffsetDateTime nowInUTC = now.withOffsetSameInstant(ZoneOffset.of( "00:00" )); System.out.println(instantInUTC);
2022-02-16T18:36:14.509742500+05:30 2022-02-16T13:06:14.509742500Z[UTC]
3. Changing Timezones of java.util.Date
- java.util.Date represents a time instant without timezone information.
- It only represents the total time since the epoch in milliseconds.
- This is very important to understand that, by default, if we print the Date object, it will always print the date and time information along with the system’s current timezone. This is misleading behavior because it suggests that Date objects can have timezone information, which is incorrect.
The correct way to deal with Date instance in different timezones is to print the date information in other timezones using the SimpleDateFormat class. It is not a good solution to adjust the instant in the timeline by adjusting the zone offset in the milliseconds of Date object.
SimpleDateFormat FORMATTER = new SimpleDateFormat("MM/dd/yyyy 'at' hh:mma z"); //In Default Timezone Date currentDate = new Date(); //Date in current timezone System.out.println(FORMATTER.format(currentDate)); //In UTC Timezone TimeZone utcTimeZone = TimeZone.getTimeZone("UTC"); FORMATTER.setTimeZone(utcTimeZone); String sDateInUTC = FORMATTER.format(currentDate); System.out.println(sDateInUTC);
02/16/2022 at 06:36pm IST 02/16/2022 at 01:06pm UTC
Java Convert ZonedDateTime to Timestamp
In this Java core tutorial we learn how to convert a java.time.ZonedDateTime object to a java.sql.Timestamp object in Java programming language.
How to convert ZonedDateTime to Timestamp in Java
In the first solution below we can follow these steps to convert ZonedDateTime object to Timestamp object.
- Step 1: convert ZonedDateTime object to Instant object using the ZonedDateTime.toInstant() method.
- Step 2: convert the above Instant object to Timestamp object using Timestamp.from(Instant instant) method.
import java.sql.Timestamp; import java.time.Instant; import java.time.ZonedDateTime; public class ConvertZonedDateTimeToTimestampExample1 public static void main(String. args) ZonedDateTime zonedDateTime = ZonedDateTime.now(); // Convert ZonedDateTime object to Timestamp object Instant instant = zonedDateTime.toInstant(); Timestamp timestamp = Timestamp.from(instant); System.out.println("ZonedDateTime: " + zonedDateTime); System.out.println("Timestamp: " + timestamp); > >
ZonedDateTime: 2022-05-22T19:30:38.418073400+07:00[Asia/Bangkok] Timestamp: 2022-05-22 19:30:38.4180734
The second solution below we can follow these steps to convert ZonedDateTime object to Timestamp object.
- Step 1: convert ZonedDateTime object to LocalDateTime object using the ZonedDateTime.toLocalDateTime() method.
- Step 2: convert the above LocalDateTime object to Timestamp object using Timestamp.valueOf(LocalDateTime dateTime) method.
import java.sql.Timestamp; import java.time.LocalDateTime; import java.time.ZonedDateTime; public class ConvertZonedDateTimeToTimestampExample2 public static void main(String. args) ZonedDateTime zonedDateTime = ZonedDateTime.now(); // Convert ZonedDateTime object to Timestamp object LocalDateTime localDateTime = zonedDateTime.toLocalDateTime(); Timestamp timestamp = Timestamp.valueOf(localDateTime); System.out.println("ZonedDateTime: " + zonedDateTime); System.out.println("Timestamp: " + timestamp); > >
ZonedDateTime: 2022-05-22T19:30:58.243393600+07:00[Asia/Bangkok] Timestamp: 2022-05-22 19:30:58.2433936
Как получить текущие метки времени в Java
В этой статье показано несколько примеров Java для получения текущего времени даты или метки времени в Java. (Обновлено с Java 8).
В этой статье показано несколько примеров Java для получения текущего времени даты или метки времени в Java. (Обновлено с Java 8).
// 2021-03-24 16:48:05.591 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); // 2021-03-24 16:48:05.591 Date date = new Date(); Timestamp timestamp2 = new Timestamp(date.getTime()); // convert Instant to Timestamp Timestamp ts = Timestamp.from(Instant.now()) // convert ZonedDateTime to Instant to Timestamp Timestamp ts = Timestamp.from(ZonedDateTime.now().toInstant())); // convert Timestamp to Instant Instant instant = ts.toInstant();
1. Примеры временных меток Java
Приведенная ниже программа использует java.sql. Метка времени чтобы получить текущую метку времени и отформатировать дисплей с помощью SimpleDateFormat .
package com.mkyong.app; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; public class TimeStampExample < // 2021.03.24.16.34.26 private static final SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss"); // 2021-03-24T16:44:39.083+08:00 private static final SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); // 2021-03-24 16:48:05 private static final SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) < // method 1 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); // 2021-03-24 16:34:26.666 // method 2 - via Date Date date = new Date(); System.out.println(new Timestamp(date.getTime())); // 2021-03-24 16:34:26.666 // number of milliseconds since January 1, 1970, 00:00:00 GMT System.out.println(timestamp.getTime()); // 1616574866666 System.out.println(sdf1.format(timestamp)); // 2021.03.24.16.34.26 System.out.println(sdf2.format(timestamp)); // 2021-03-24T16:48:05.591+08:00 System.out.println(sdf3.format(timestamp)); // 2021-03-24 16:48:05 >>
2021-03-24 16:48:05.591 2021-03-24 16:48:05.591 1616575685591 2021.03.24.16.48.05 2021-03-24T16:48:05.591+08:00 2021-03-24 16:48:05
2. Мгновенное преобразование в/из метки времени
В этом примере показано, как преобразовать новую Java 8 java.time. Мгновенный в и из унаследованного java.sql. Метка времени .
// convert Instant to Timestamp Timestamp ts = Timestamp.from(Instant.now()) // convert Timestamp to Instant Instant instant = ts.toInstant();
package com.mkyong.app; import java.sql.Timestamp; import java.time.Instant; public class InstantExample < public static void main(String[] args) < Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); // 2021-03-24 17:12:03.311 System.out.println(timestamp.getTime()); // 1616577123311 // Convert Timestamp to Instant Instant instant = timestamp.toInstant(); System.out.println(instant); // 2021-03-24T09:12:03.311Z System.out.println(instant.toEpochMilli()); // 1616577123311 // Convert Instant to Timestamp Timestamp tsFromInstant = Timestamp.from(instant); System.out.println(tsFromInstant.getTime()); // 1616577123311 >>
2021-03-24 17:12:03.311 1616577123311 2021-03-24T09:12:03.311Z 1616577123311 1616577123311
3. Вставить метку времени в таблицу
Файл java.sql. Временная метка по-прежнему широко используется в программировании JDBC. Смотрите следующие преобразования:
// Java 8, java.time.* // convert LocalDateTime to Timestamp preparedStatement.setTimestamp(1, Timestamp.valueOf(LocalDateTime.now())); // convert Instant to Timestamp preparedStatement.setTimestamp(1, Timestamp.from(Instant.now())); // Convert ZonedDateTime to Instant to Timestamp preparedStatement.setTimestamp(3, Timestamp.from(ZonedDateTime.now().toInstant()));
Приведенный ниже пример является примером JDBC вставки Отметка времени в таблицу.
package com.mkyong.app; import java.math.BigDecimal; import java.sql.*; import java.time.LocalDateTime; public class JdbcExample < private static final String SQL_INSERT = "INSERT INTO EMPLOYEE (NAME, SALARY, CREATED_DATE) VALUES (. )"; public static void main(String[] args) < try (Connection conn = DriverManager.getConnection( "jdbc:postgresql://127.0.0.1:5432/test", "postgres", "password"); PreparedStatement preparedStatement = conn.prepareStatement(SQL_INSERT)) < preparedStatement.setString(1, "mkyong"); preparedStatement.setBigDecimal(2, new BigDecimal("799.88")); preparedStatement.setTimestamp(3, Timestamp.valueOf(LocalDateTime.now())); // preparedStatement.setTimestamp(3, Timestamp.from(ZonedDateTime.now().toInstant())); // preparedStatement.setTimestamp(3, Timestamp.from(Instant.now())); int row = preparedStatement.executeUpdate(); // rows affected System.out.println(row); //1 >catch (SQLException e) < System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage()); >catch (Exception e) < e.printStackTrace(); >> >
Примечание Дополнительные примеры для получения текущего времени даты или метки времени в Java .
4. Рекомендации
- Учебные пособия по дате и времени Java
- JDBC PreparedStatement – Вставить строку
- Как узнать текущую дату и время на Java
- Википедия – Эпоха времени
- Википедия – Метка времени
- Отметка времени
- Локальное время
- Дата в зоне
- Моментальный
- Дата
- Преобразователь даты и времени
- SimpleDateФормат
Читайте ещё по теме:
Как получить текущие метки времени в Java
В этой статье показано несколько примеров Java для получения текущего времени даты или метки времени в Java. (Обновлено с Java 8).
В этой статье показано несколько примеров Java для получения текущего времени даты или метки времени в Java. (Обновлено с Java 8).
// 2021-03-24 16:48:05.591 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); // 2021-03-24 16:48:05.591 Date date = new Date(); Timestamp timestamp2 = new Timestamp(date.getTime()); // convert Instant to Timestamp Timestamp ts = Timestamp.from(Instant.now()) // convert ZonedDateTime to Instant to Timestamp Timestamp ts = Timestamp.from(ZonedDateTime.now().toInstant())); // convert Timestamp to Instant Instant instant = ts.toInstant();
1. Примеры временных меток Java
Приведенная ниже программа использует java.sql. Метка времени чтобы получить текущую метку времени и отформатировать дисплей с помощью SimpleDateFormat .
package com.mkyong.app; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; public class TimeStampExample < // 2021.03.24.16.34.26 private static final SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss"); // 2021-03-24T16:44:39.083+08:00 private static final SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); // 2021-03-24 16:48:05 private static final SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) < // method 1 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); // 2021-03-24 16:34:26.666 // method 2 - via Date Date date = new Date(); System.out.println(new Timestamp(date.getTime())); // 2021-03-24 16:34:26.666 // number of milliseconds since January 1, 1970, 00:00:00 GMT System.out.println(timestamp.getTime()); // 1616574866666 System.out.println(sdf1.format(timestamp)); // 2021.03.24.16.34.26 System.out.println(sdf2.format(timestamp)); // 2021-03-24T16:48:05.591+08:00 System.out.println(sdf3.format(timestamp)); // 2021-03-24 16:48:05 >>
2021-03-24 16:48:05.591 2021-03-24 16:48:05.591 1616575685591 2021.03.24.16.48.05 2021-03-24T16:48:05.591+08:00 2021-03-24 16:48:05
2. Мгновенное преобразование в/из метки времени
В этом примере показано, как преобразовать новую Java 8 java.time. Мгновенный в и из унаследованного java.sql. Метка времени .
// convert Instant to Timestamp Timestamp ts = Timestamp.from(Instant.now()) // convert Timestamp to Instant Instant instant = ts.toInstant();
package com.mkyong.app; import java.sql.Timestamp; import java.time.Instant; public class InstantExample < public static void main(String[] args) < Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); // 2021-03-24 17:12:03.311 System.out.println(timestamp.getTime()); // 1616577123311 // Convert Timestamp to Instant Instant instant = timestamp.toInstant(); System.out.println(instant); // 2021-03-24T09:12:03.311Z System.out.println(instant.toEpochMilli()); // 1616577123311 // Convert Instant to Timestamp Timestamp tsFromInstant = Timestamp.from(instant); System.out.println(tsFromInstant.getTime()); // 1616577123311 >>
2021-03-24 17:12:03.311 1616577123311 2021-03-24T09:12:03.311Z 1616577123311 1616577123311
3. Вставить метку времени в таблицу
Файл java.sql. Временная метка по-прежнему широко используется в программировании JDBC. Смотрите следующие преобразования:
// Java 8, java.time.* // convert LocalDateTime to Timestamp preparedStatement.setTimestamp(1, Timestamp.valueOf(LocalDateTime.now())); // convert Instant to Timestamp preparedStatement.setTimestamp(1, Timestamp.from(Instant.now())); // Convert ZonedDateTime to Instant to Timestamp preparedStatement.setTimestamp(3, Timestamp.from(ZonedDateTime.now().toInstant()));
Приведенный ниже пример является примером JDBC вставки Отметка времени в таблицу.
package com.mkyong.app; import java.math.BigDecimal; import java.sql.*; import java.time.LocalDateTime; public class JdbcExample < private static final String SQL_INSERT = "INSERT INTO EMPLOYEE (NAME, SALARY, CREATED_DATE) VALUES (. )"; public static void main(String[] args) < try (Connection conn = DriverManager.getConnection( "jdbc:postgresql://127.0.0.1:5432/test", "postgres", "password"); PreparedStatement preparedStatement = conn.prepareStatement(SQL_INSERT)) < preparedStatement.setString(1, "mkyong"); preparedStatement.setBigDecimal(2, new BigDecimal("799.88")); preparedStatement.setTimestamp(3, Timestamp.valueOf(LocalDateTime.now())); // preparedStatement.setTimestamp(3, Timestamp.from(ZonedDateTime.now().toInstant())); // preparedStatement.setTimestamp(3, Timestamp.from(Instant.now())); int row = preparedStatement.executeUpdate(); // rows affected System.out.println(row); //1 >catch (SQLException e) < System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage()); >catch (Exception e) < e.printStackTrace(); >> >
Примечание Дополнительные примеры для получения текущего времени даты или метки времени в Java .
4. Рекомендации
- Учебные пособия по дате и времени Java
- JDBC PreparedStatement – Вставить строку
- Как узнать текущую дату и время на Java
- Википедия – Эпоха времени
- Википедия – Метка времени
- Отметка времени
- Локальное время
- Дата в зоне
- Моментальный
- Дата
- Преобразователь даты и времени
- SimpleDateФормат