package com.pjilisense.flxai.wrapper;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;
import java.time.*;
import java.time.format.DateTimeFormatter;

public class OffsetDateTimeDeserializer extends JsonDeserializer<OffsetDateTime> {
    @Override
    public OffsetDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        String dateTimeStr = p.getText();
        if(dateTimeStr==null || dateTimeStr.trim().length()==0){
            return null;
        }
        if(dateTimeStr.length()==19&& dateTimeStr.indexOf('T')==-1) {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            // 创建一个Joda DateTime实例
            LocalDateTime localDateTimeBJ = LocalDateTime.parse(dateTimeStr, formatter);
            // 转换为OffsetDateTime
            //OffsetDateTime offsetDateTimeUtc = localDateTime.atOffset(ZoneOffset.UTC);
            OffsetDateTime offsetDateTimeUtc = localDateTimeBJ.atOffset(ZoneOffset.ofHours(+8));
            return offsetDateTimeUtc;
        } else if(dateTimeStr.length()>19) {
            OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeStr, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
            return dateTime;
        }
        return null;
    }
}

