Post

Java java.text.ParseException Invalid time zone indicator

1. 오류 메시지

String 형태의 DateTime을 DB에 입력하기 위해 Timestamp 형으로 변환시 생기는 오류이다.

1
gson java.text.ParseException Invalid time zone indicator '0'

2. 해결방법

밀리세컨드 형태의 DateTime이기 때문에 Gson의 설정이 필요하다.

  • Json
1
2
3
{
    "dateTime": "1684888240164"
}
  • Example.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import com.example.webclient.dto.ExampleDto;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;

import java.lang.reflect.Type;
import java.util.Date;

public class Example {
    final Gson builder = new GsonBuilder().registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
        public Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context) throws JsonParseException {
            return new Date(jsonElement.getAsJsonPrimitive().getAsLong());
        }
    }).create();

    public void dateExample2(String json) {
        ExampleDto exampleDto = builder.fromJson(json, ExampleDto.class);
    }
}

참고: 2023년 05월 24일 09시 30분 50초를 날짜와 시간을 모두 붙인 20230524093050밀리세컨드 형태의 데이터이기 때문에 Gson을 사용하여 Timestamp로 변환하면 잘못된 날짜와 시간이 나온다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.