Как мы можем преобразовать тип данных Timestamp в Java в UT C часовой пояс в сущности JPA Java? - PullRequest
1 голос
/ 17 января 2020

Мы используем класс PO для представления базы данных sql и используем Java сущность JPA. В этом классе у нас есть один столбец в виде поля currentTime с типом данных Timestamp и аннотацией @version из JPA.

@Version
private Timestamp currentTime;

всякий раз, когда сущность обновляется, currentTime обновляется с самым последним временем.

currentTime = new Timestamp(0); //this will create the new timestamp with current time.

, но в данный момент он требует времени с сервера. Я хочу преобразовать это время в формат UT C перед сохранением в БД.

Кто-нибудь может помочь, как я могу преобразовать время в UT C время?

Ответы [ 3 ]

1 голос
/ 17 января 2020

У меня была похожая проблема, когда мне нужно было проанализировать время с сервера, но мне нужно было преобразовать это время в формат UT C перед сохранением этой информации в MySQL DB. Это было мое решение:

     Instant dateConverted = LocalDateTime
                            .parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH))
                            .atZone(ZoneId.of("Europe/Bratislava")).toInstant();

     long epochTime = dateConverted.toEpochMilli() / 1000L;

Где dateTime - переменная String , содержащая дату и время с сервера. Я использовал DateTimeFormatter отформатировать мое время в соответствующий формат. В конце я добавил zoneID своего часового пояса и преобразовал его в Instant

И в конце я преобразовал в секунды

0 голосов
/ 17 января 2020
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault());
       sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    String localTime = sdf.format(new Date(your_time_stamp));
    Date date = new Date();
    try {
        date = sdf.parse(localTime);//get local date
    } catch (ParseException e) {
        e.printStackTrace();
    }
0 голосов
/ 17 января 2020

Попробуйте код ниже,

currentTime = Timestamp.valueOf(LocalDateTime.ofInstant(Instant.now(), ZoneOffset.UTC));
...