Jdk8DateCodec.smali
.class public Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;
.super Lcom/alibaba/fastjson/parser/deserializer/ContextObjectDeserializer;
.source "Jdk8DateCodec.java"
# interfaces
.implements Lcom/alibaba/fastjson/serializer/ObjectSerializer;
.implements Lcom/alibaba/fastjson/serializer/ContextObjectSerializer;
.implements Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
# static fields
.field private static final ISO_FIXED_FORMAT:Ljava/time/format/DateTimeFormatter;
.field private static final defaultFormatter:Ljava/time/format/DateTimeFormatter;
.field private static final defaultFormatter_23:Ljava/time/format/DateTimeFormatter;
.field private static final defaultPatttern:Ljava/lang/String; = "yyyy-MM-dd HH:mm:ss"
.field private static final formatter_d10_cn:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_d10_de:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_d10_eur:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_d10_in:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_d10_kr:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_d10_tw:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_d10_us:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_d8:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_cn:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_cn_1:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_de:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_eur:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_in:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_kr:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_tw:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_dt19_us:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_iso8601:Ljava/time/format/DateTimeFormatter;
.field private static final formatter_iso8601_pattern:Ljava/lang/String; = "yyyy-MM-dd\'T\'HH:mm:ss"
.field private static final formatter_iso8601_pattern_23:Ljava/lang/String; = "yyyy-MM-dd\'T\'HH:mm:ss.SSS"
.field private static final formatter_iso8601_pattern_29:Ljava/lang/String; = "yyyy-MM-dd\'T\'HH:mm:ss.SSSSSSSSS"
.field public static final instance:Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;
# direct methods
.method static constructor <clinit>()V
.registers 2
.line 33
new-instance v0, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;
invoke-direct {v0}, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->instance:Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;
const-string/jumbo v0, "yyyy-MM-dd HH:mm:ss"
.line 36
invoke-static {v0}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->defaultFormatter:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy-MM-dd HH:mm:ss.SSS"
.line 37
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->defaultFormatter_23:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy/MM/dd HH:mm:ss"
.line 38
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_tw:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy\u5e74M\u6708d\u65e5 HH:mm:ss"
.line 39
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_cn:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy\u5e74M\u6708d\u65e5 H\u65f6m\u5206s\u79d2"
.line 40
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_cn_1:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy\ub144M\uc6d4d\uc77c HH:mm:ss"
.line 41
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_kr:Ljava/time/format/DateTimeFormatter;
const-string v1, "MM/dd/yyyy HH:mm:ss"
.line 42
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_us:Ljava/time/format/DateTimeFormatter;
const-string v1, "dd/MM/yyyy HH:mm:ss"
.line 43
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_eur:Ljava/time/format/DateTimeFormatter;
const-string v1, "dd.MM.yyyy HH:mm:ss"
.line 44
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_de:Ljava/time/format/DateTimeFormatter;
const-string v1, "dd-MM-yyyy HH:mm:ss"
.line 45
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_in:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyyMMdd"
.line 47
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d8:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy/MM/dd"
.line 48
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_tw:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy\u5e74M\u6708d\u65e5"
.line 49
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_cn:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v1, "yyyy\ub144M\uc6d4d\uc77c"
.line 50
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_kr:Ljava/time/format/DateTimeFormatter;
const-string v1, "MM/dd/yyyy"
.line 51
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_us:Ljava/time/format/DateTimeFormatter;
const-string v1, "dd/MM/yyyy"
.line 52
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_eur:Ljava/time/format/DateTimeFormatter;
const-string v1, "dd.MM.yyyy"
.line 53
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_de:Ljava/time/format/DateTimeFormatter;
const-string v1, "dd-MM-yyyy"
.line 54
invoke-static {v1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_in:Ljava/time/format/DateTimeFormatter;
.line 57
invoke-static {v0}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v0
invoke-static {}, Ljava/time/ZoneId;->systemDefault()Ljava/time/ZoneId;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/time/format/DateTimeFormatter;->withZone(Ljava/time/ZoneId;)Ljava/time/format/DateTimeFormatter;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->ISO_FIXED_FORMAT:Ljava/time/format/DateTimeFormatter;
const-string/jumbo v0, "yyyy-MM-dd\'T\'HH:mm:ss"
.line 62
invoke-static {v0}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_iso8601:Ljava/time/format/DateTimeFormatter;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 31
invoke-direct {p0}, Lcom/alibaba/fastjson/parser/deserializer/ContextObjectDeserializer;-><init>()V
return-void
.end method
.method public static castToLocalDateTime(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
.registers 2
if-nez p0, :cond_4
const/4 p0, 0x0
return-object p0
:cond_4
if-nez p1, :cond_9
const-string/jumbo p1, "yyyy-MM-dd HH:mm:ss"
.line 633
:cond_9
invoke-static {p1}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object p1
.line 634
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
invoke-static {p0, p1}, Ljava/time/LocalDateTime;->parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDateTime;
move-result-object p0
return-object p0
.end method
.method private write(Lcom/alibaba/fastjson/serializer/SerializeWriter;Ljava/time/temporal/TemporalAccessor;Ljava/lang/String;)V
.registers 6
const-string v0, "unixtime"
.line 585
invoke-virtual {v0, p3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_30
.line 587
instance-of v0, p2, Ljava/time/chrono/ChronoZonedDateTime;
if-eqz v0, :cond_17
.line 588
check-cast p2, Ljava/time/chrono/ChronoZonedDateTime;
invoke-interface {p2}, Ljava/time/chrono/ChronoZonedDateTime;->toEpochSecond()J
move-result-wide p2
long-to-int p2, p2
.line 589
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeInt(I)V
return-void
.line 593
:cond_17
instance-of v0, p2, Ljava/time/LocalDateTime;
if-eqz v0, :cond_30
.line 594
check-cast p2, Ljava/time/LocalDateTime;
sget-object p3, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {p3}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p3
invoke-virtual {p2, p3}, Ljava/time/LocalDateTime;->atZone(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
move-result-object p2
invoke-virtual {p2}, Ljava/time/ZonedDateTime;->toEpochSecond()J
move-result-wide p2
long-to-int p2, p2
.line 595
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeInt(I)V
return-void
:cond_30
const-string v0, "millis"
.line 600
invoke-virtual {v0, p3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_64
const/4 v0, 0x0
.line 602
instance-of v1, p2, Ljava/time/chrono/ChronoZonedDateTime;
if-eqz v1, :cond_45
.line 603
move-object v0, p2
check-cast v0, Ljava/time/chrono/ChronoZonedDateTime;
invoke-interface {v0}, Ljava/time/chrono/ChronoZonedDateTime;->toInstant()Ljava/time/Instant;
move-result-object v0
goto :goto_5a
.line 604
:cond_45
instance-of v1, p2, Ljava/time/LocalDateTime;
if-eqz v1, :cond_5a
.line 605
move-object v0, p2
check-cast v0, Ljava/time/LocalDateTime;
sget-object v1, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {v1}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/time/LocalDateTime;->atZone(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
move-result-object v0
invoke-virtual {v0}, Ljava/time/ZonedDateTime;->toInstant()Ljava/time/Instant;
move-result-object v0
:cond_5a
:goto_5a
if-eqz v0, :cond_64
.line 608
invoke-virtual {v0}, Ljava/time/Instant;->toEpochMilli()J
move-result-wide p2
.line 609
invoke-virtual {p1, p2, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeLong(J)V
return-void
:cond_64
const-string/jumbo v0, "yyyy-MM-dd\'T\'HH:mm:ss"
if-ne p3, v0, :cond_6c
.line 615
sget-object p3, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_iso8601:Ljava/time/format/DateTimeFormatter;
goto :goto_70
.line 617
:cond_6c
invoke-static {p3}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object p3
.line 620
:goto_70
invoke-virtual {p3, p2}, Ljava/time/format/DateTimeFormatter;->format(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/String;
move-result-object p2
.line 621
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V
return-void
.end method
# virtual methods
.method public deserialze(Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;Ljava/lang/String;I)Ljava/lang/Object;
.registers 14
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lcom/alibaba/fastjson/parser/DefaultJSONParser;",
"Ljava/lang/reflect/Type;",
"Ljava/lang/Object;",
"Ljava/lang/String;",
"I)TT;"
}
.end annotation
.line 66
iget-object p3, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer;
.line 67
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result p5
const/4 v0, 0x0
const/16 v1, 0x8
if-ne p5, v1, :cond_f
.line 68
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken()V
return-object v0
.line 72
:cond_f
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result p5
const/4 v2, 0x4
if-ne p5, v2, :cond_18d
.line 73
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->stringVal()Ljava/lang/String;
move-result-object p5
.line 74
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken()V
if-eqz p4, :cond_30
const-string/jumbo p3, "yyyy-MM-dd HH:mm:ss"
.line 78
invoke-virtual {p3, p4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p3
if-eqz p3, :cond_2b
.line 79
sget-object p3, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->defaultFormatter:Ljava/time/format/DateTimeFormatter;
goto :goto_31
.line 81
:cond_2b
invoke-static {p4}, Ljava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
move-result-object p3
goto :goto_31
:cond_30
move-object p3, v0
:goto_31
const-string v2, ""
.line 85
invoke-virtual {v2, p5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_3a
return-object v0
.line 89
:cond_3a
const-class v2, Ljava/time/LocalDateTime;
if-ne p2, v2, :cond_5d
.line 91
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
const/16 p2, 0xa
if-eq p1, p2, :cond_52
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
if-ne p1, v1, :cond_4d
goto :goto_52
.line 95
:cond_4d
invoke-virtual {p0, p5, p3}, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->parseDateTime(Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDateTime;
move-result-object p1
goto :goto_5c
.line 92
:cond_52
:goto_52
invoke-virtual {p0, p5, p4, p3}, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->parseLocalDate(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDate;
move-result-object p1
.line 93
sget-object p2, Ljava/time/LocalTime;->MIN:Ljava/time/LocalTime;
invoke-static {p1, p2}, Ljava/time/LocalDateTime;->of(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime;
move-result-object p1
:goto_5c
return-object p1
.line 98
:cond_5d
const-class v2, Ljava/time/LocalDate;
const/16 v3, 0x17
if-ne p2, v2, :cond_83
.line 100
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
if-ne p1, v3, :cond_7e
.line 101
invoke-static {p5}, Ljava/time/LocalDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/LocalDateTime;
move-result-object p1
.line 102
invoke-virtual {p1}, Ljava/time/LocalDateTime;->getYear()I
move-result p2
invoke-virtual {p1}, Ljava/time/LocalDateTime;->getMonthValue()I
move-result p3
.line 103
invoke-virtual {p1}, Ljava/time/LocalDateTime;->getDayOfMonth()I
move-result p1
.line 102
invoke-static {p2, p3, p1}, Ljava/time/LocalDate;->of(III)Ljava/time/LocalDate;
move-result-object p1
goto :goto_82
.line 105
:cond_7e
invoke-virtual {p0, p5, p4, p3}, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->parseLocalDate(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDate;
move-result-object p1
:goto_82
return-object p1
.line 109
:cond_83
const-class p4, Ljava/time/LocalTime;
const/16 v2, 0x39
const/16 v4, 0x30
const/16 v5, 0x13
const/4 v6, 0x1
const/4 v7, 0x0
if-ne p2, p4, :cond_ec
.line 111
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
if-ne p1, v3, :cond_ae
.line 112
invoke-static {p5}, Ljava/time/LocalDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/LocalDateTime;
move-result-object p1
.line 113
invoke-virtual {p1}, Ljava/time/LocalDateTime;->getHour()I
move-result p2
invoke-virtual {p1}, Ljava/time/LocalDateTime;->getMinute()I
move-result p3
.line 114
invoke-virtual {p1}, Ljava/time/LocalDateTime;->getSecond()I
move-result p4
invoke-virtual {p1}, Ljava/time/LocalDateTime;->getNano()I
move-result p1
.line 113
invoke-static {p2, p3, p4, p1}, Ljava/time/LocalTime;->of(IIII)Ljava/time/LocalTime;
move-result-object p1
goto :goto_eb
:cond_ae
move p1, v7
.line 117
:goto_af
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p2
if-ge p1, p2, :cond_c2
.line 118
invoke-virtual {p5, p1}, Ljava/lang/String;->charAt(I)C
move-result p2
if-lt p2, v4, :cond_c1
if-le p2, v2, :cond_be
goto :goto_c1
:cond_be
add-int/lit8 p1, p1, 0x1
goto :goto_af
:cond_c1
:goto_c1
move v6, v7
:cond_c2
if-eqz v6, :cond_e7
.line 125
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
if-le p1, v1, :cond_e7
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
if-ge p1, v5, :cond_e7
.line 126
invoke-static {p5}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide p1
.line 129
invoke-static {p1, p2}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
.line 130
invoke-virtual {p2}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p2
.line 128
invoke-static {p1, p2}, Ljava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;
move-result-object p1
.line 131
invoke-virtual {p1}, Ljava/time/LocalDateTime;->toLocalTime()Ljava/time/LocalTime;
move-result-object p1
goto :goto_eb
.line 133
:cond_e7
invoke-static {p5}, Ljava/time/LocalTime;->parse(Ljava/lang/CharSequence;)Ljava/time/LocalTime;
move-result-object p1
:goto_eb
return-object p1
.line 137
:cond_ec
const-class p4, Ljava/time/ZonedDateTime;
if-ne p2, p4, :cond_12c
.line 138
sget-object p2, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->defaultFormatter:Ljava/time/format/DateTimeFormatter;
if-ne p3, p2, :cond_f6
.line 139
sget-object p3, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->ISO_FIXED_FORMAT:Ljava/time/format/DateTimeFormatter;
:cond_f6
if-nez p3, :cond_127
.line 143
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p2
if-gt p2, v5, :cond_127
.line 144
new-instance p2, Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-direct {p2, p5}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;)V
.line 145
iget-object p1, p1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->lexer:Lcom/alibaba/fastjson/parser/JSONLexer;
invoke-interface {p1}, Lcom/alibaba/fastjson/parser/JSONLexer;->getTimeZone()Ljava/util/TimeZone;
move-result-object p1
.line 146
invoke-virtual {p2, p1}, Lcom/alibaba/fastjson/parser/JSONScanner;->setTimeZone(Ljava/util/TimeZone;)V
.line 147
invoke-virtual {p2, v7}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch(Z)Z
move-result p4
if-eqz p4, :cond_127
.line 149
invoke-virtual {p2}, Lcom/alibaba/fastjson/parser/JSONScanner;->getCalendar()Ljava/util/Calendar;
move-result-object p2
invoke-virtual {p2}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
move-result-object p2
.line 150
invoke-virtual {p2}, Ljava/util/Date;->toInstant()Ljava/time/Instant;
move-result-object p2
invoke-virtual {p1}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p1
invoke-static {p2, p1}, Ljava/time/ZonedDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
move-result-object p1
return-object p1
.line 156
:cond_127
invoke-virtual {p0, p5, p3}, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->parseZonedDateTime(Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)Ljava/time/ZonedDateTime;
move-result-object p1
return-object p1
.line 159
:cond_12c
const-class p1, Ljava/time/OffsetDateTime;
if-ne p2, p1, :cond_135
.line 160
invoke-static {p5}, Ljava/time/OffsetDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/OffsetDateTime;
move-result-object p1
return-object p1
.line 163
:cond_135
const-class p1, Ljava/time/OffsetTime;
if-ne p2, p1, :cond_13e
.line 164
invoke-static {p5}, Ljava/time/OffsetTime;->parse(Ljava/lang/CharSequence;)Ljava/time/OffsetTime;
move-result-object p1
return-object p1
.line 167
:cond_13e
const-class p1, Ljava/time/ZoneId;
if-ne p2, p1, :cond_147
.line 168
invoke-static {p5}, Ljava/time/ZoneId;->of(Ljava/lang/String;)Ljava/time/ZoneId;
move-result-object p1
return-object p1
.line 171
:cond_147
const-class p1, Ljava/time/Period;
if-ne p2, p1, :cond_150
.line 172
invoke-static {p5}, Ljava/time/Period;->parse(Ljava/lang/CharSequence;)Ljava/time/Period;
move-result-object p1
return-object p1
.line 175
:cond_150
const-class p1, Ljava/time/Duration;
if-ne p2, p1, :cond_159
.line 176
invoke-static {p5}, Ljava/time/Duration;->parse(Ljava/lang/CharSequence;)Ljava/time/Duration;
move-result-object p1
return-object p1
.line 178
:cond_159
const-class p1, Ljava/time/Instant;
if-ne p2, p1, :cond_29e
move p1, v7
.line 180
:goto_15e
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p2
if-ge p1, p2, :cond_171
.line 181
invoke-virtual {p5, p1}, Ljava/lang/String;->charAt(I)C
move-result p2
if-lt p2, v4, :cond_170
if-le p2, v2, :cond_16d
goto :goto_170
:cond_16d
add-int/lit8 p1, p1, 0x1
goto :goto_15e
:cond_170
:goto_170
move v6, v7
:cond_171
if-eqz v6, :cond_188
.line 187
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
if-le p1, v1, :cond_188
invoke-virtual {p5}, Ljava/lang/String;->length()I
move-result p1
if-ge p1, v5, :cond_188
.line 188
invoke-static {p5}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide p1
.line 189
invoke-static {p1, p2}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
return-object p1
.line 192
:cond_188
invoke-static {p5}, Ljava/time/Instant;->parse(Ljava/lang/CharSequence;)Ljava/time/Instant;
move-result-object p1
return-object p1
.line 196
:cond_18d
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result p5
const/4 v1, 0x2
if-ne p5, v1, :cond_243
.line 197
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->longValue()J
move-result-wide v0
.line 198
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken()V
const-string p1, "unixtime"
.line 200
invoke-virtual {p1, p4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_1a7
const-wide/16 p3, 0x3e8
mul-long/2addr v0, p3
goto :goto_1e0
:cond_1a7
const-string/jumbo p1, "yyyyMMddHHmmss"
.line 202
invoke-virtual {p1, p4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_1e0
const-wide p3, 0x2540be400L
.line 203
div-long p3, v0, p3
long-to-int v2, p3
const-wide/32 p3, 0x5f5e100
.line 204
div-long p3, v0, p3
const-wide/16 v3, 0x64
rem-long/2addr p3, v3
long-to-int p1, p3
const-wide/32 p3, 0xf4240
.line 205
div-long p3, v0, p3
rem-long/2addr p3, v3
long-to-int p3, p3
const-wide/16 p4, 0x2710
.line 206
div-long p4, v0, p4
rem-long/2addr p4, v3
long-to-int v5, p4
.line 207
div-long p4, v0, v3
rem-long/2addr p4, v3
long-to-int v6, p4
.line 208
rem-long p4, v0, v3
long-to-int v7, p4
.line 210
const-class p4, Ljava/time/LocalDateTime;
if-ne p2, p4, :cond_1e0
move v3, p1
move v4, p3
.line 211
invoke-static/range {v2 .. v7}, Ljava/time/LocalDateTime;->of(IIIIII)Ljava/time/LocalDateTime;
move-result-object p1
return-object p1
.line 215
:cond_1e0
:goto_1e0
const-class p1, Ljava/time/LocalDateTime;
if-ne p2, p1, :cond_1f3
.line 216
invoke-static {v0, v1}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {p2}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p2
invoke-static {p1, p2}, Ljava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;
move-result-object p1
return-object p1
.line 219
:cond_1f3
const-class p1, Ljava/time/LocalDate;
if-ne p2, p1, :cond_20a
.line 220
invoke-static {v0, v1}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {p2}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p2
invoke-static {p1, p2}, Ljava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;
move-result-object p1
invoke-virtual {p1}, Ljava/time/LocalDateTime;->toLocalDate()Ljava/time/LocalDate;
move-result-object p1
return-object p1
.line 222
:cond_20a
const-class p1, Ljava/time/LocalTime;
if-ne p2, p1, :cond_221
.line 223
invoke-static {v0, v1}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {p2}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p2
invoke-static {p1, p2}, Ljava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;
move-result-object p1
invoke-virtual {p1}, Ljava/time/LocalDateTime;->toLocalTime()Ljava/time/LocalTime;
move-result-object p1
return-object p1
.line 226
:cond_221
const-class p1, Ljava/time/ZonedDateTime;
if-ne p2, p1, :cond_234
.line 227
invoke-static {v0, v1}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {p2}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p2
invoke-static {p1, p2}, Ljava/time/ZonedDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
move-result-object p1
return-object p1
.line 230
:cond_234
const-class p1, Ljava/time/Instant;
if-ne p2, p1, :cond_23d
.line 231
invoke-static {v0, v1}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
return-object p1
.line 234
:cond_23d
new-instance p1, Ljava/lang/UnsupportedOperationException;
invoke-direct {p1}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw p1
.line 235
:cond_243
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result p3
const/16 p4, 0xc
if-ne p3, p4, :cond_29f
.line 236
invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parseObject()Lcom/alibaba/fastjson/JSONObject;
move-result-object p1
.line 238
const-class p3, Ljava/time/Instant;
const-string p4, "nano"
if-ne p2, p3, :cond_285
const-string p2, "epochSecond"
.line 239
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/JSONObject;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p2
.line 240
invoke-virtual {p1, p4}, Lcom/alibaba/fastjson/JSONObject;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
.line 241
instance-of p3, p2, Ljava/lang/Number;
if-eqz p3, :cond_278
instance-of p4, p1, Ljava/lang/Number;
if-eqz p4, :cond_278
.line 242
check-cast p2, Ljava/lang/Number;
.line 243
invoke-static {p2}, Lcom/alibaba/fastjson/util/TypeUtils;->longExtractValue(Ljava/lang/Number;)J
move-result-wide p2
check-cast p1, Ljava/lang/Number;
.line 244
invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->longExtractValue(Ljava/lang/Number;)J
move-result-wide p4
.line 242
invoke-static {p2, p3, p4, p5}, Ljava/time/Instant;->ofEpochSecond(JJ)Ljava/time/Instant;
move-result-object p1
return-object p1
:cond_278
if-eqz p3, :cond_29e
.line 248
check-cast p2, Ljava/lang/Number;
.line 249
invoke-static {p2}, Lcom/alibaba/fastjson/util/TypeUtils;->longExtractValue(Ljava/lang/Number;)J
move-result-wide p1
.line 248
invoke-static {p1, p2}, Ljava/time/Instant;->ofEpochSecond(J)Ljava/time/Instant;
move-result-object p1
return-object p1
.line 251
:cond_285
const-class p3, Ljava/time/Duration;
if-ne p2, p3, :cond_29e
const-string p2, "seconds"
.line 252
invoke-virtual {p1, p2}, Lcom/alibaba/fastjson/JSONObject;->getLong(Ljava/lang/String;)Ljava/lang/Long;
move-result-object p2
if-eqz p2, :cond_29e
.line 254
invoke-virtual {p1, p4}, Lcom/alibaba/fastjson/JSONObject;->getLongValue(Ljava/lang/String;)J
move-result-wide p3
.line 255
invoke-virtual {p2}, Ljava/lang/Long;->longValue()J
move-result-wide p1
invoke-static {p1, p2, p3, p4}, Ljava/time/Duration;->ofSeconds(JJ)Ljava/time/Duration;
move-result-object p1
return-object p1
:cond_29e
return-object v0
.line 259
:cond_29f
new-instance p1, Ljava/lang/UnsupportedOperationException;
invoke-direct {p1}, Ljava/lang/UnsupportedOperationException;-><init>()V
throw p1
.end method
.method public getFastMatchToken()I
.registers 2
const/4 v0, 0x4
return v0
.end method
.method protected parseDateTime(Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDateTime;
.registers 19
move-object/from16 v0, p1
const/16 v1, 0x13
const/4 v2, 0x1
const/4 v3, 0x0
const/16 v4, 0x30
if-nez p2, :cond_115
.line 266
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v5
const/16 v6, 0x20
const/16 v7, 0x10
const/16 v8, 0xd
const/4 v9, 0x7
const/16 v10, 0x2e
const/4 v11, 0x4
const/16 v12, 0x3a
const/16 v13, 0xa
const/16 v14, 0x2d
if-ne v5, v1, :cond_b9
.line 267
invoke-virtual {v0, v11}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 268
invoke-virtual {v0, v9}, Ljava/lang/String;->charAt(I)C
move-result v9
.line 269
invoke-virtual {v0, v13}, Ljava/lang/String;->charAt(I)C
move-result v15
.line 270
invoke-virtual {v0, v8}, Ljava/lang/String;->charAt(I)C
move-result v8
.line 271
invoke-virtual {v0, v7}, Ljava/lang/String;->charAt(I)C
move-result v7
if-ne v8, v12, :cond_e8
if-ne v7, v12, :cond_e8
if-ne v5, v14, :cond_4a
if-ne v9, v14, :cond_4a
const/16 v5, 0x54
if-ne v15, v5, :cond_44
.line 275
sget-object v5, Ljava/time/format/DateTimeFormatter;->ISO_LOCAL_DATE_TIME:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_ea
:cond_44
if-ne v15, v6, :cond_e8
.line 277
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->defaultFormatter:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_ea
:cond_4a
const/16 v6, 0x2f
if-ne v5, v6, :cond_54
if-ne v9, v6, :cond_54
.line 280
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_tw:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_ea
.line 282
:cond_54
invoke-virtual {v0, v3}, Ljava/lang/String;->charAt(I)C
move-result v7
.line 283
invoke-virtual {v0, v2}, Ljava/lang/String;->charAt(I)C
move-result v8
const/4 v9, 0x2
.line 284
invoke-virtual {v0, v9}, Ljava/lang/String;->charAt(I)C
move-result v9
const/4 v12, 0x3
.line 285
invoke-virtual {v0, v12}, Ljava/lang/String;->charAt(I)C
move-result v12
const/4 v15, 0x5
.line 286
invoke-virtual {v0, v15}, Ljava/lang/String;->charAt(I)C
move-result v15
if-ne v9, v6, :cond_ab
if-ne v15, v6, :cond_ab
sub-int/2addr v7, v4
mul-int/2addr v7, v13
sub-int/2addr v8, v4
add-int/2addr v7, v8
sub-int/2addr v12, v4
mul-int/2addr v12, v13
sub-int/2addr v5, v4
add-int/2addr v12, v5
const/16 v5, 0xc
if-le v7, v5, :cond_7f
.line 291
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_eur:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_ea
:cond_7f
if-le v12, v5, :cond_85
.line 293
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_us:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_ea
.line 295
:cond_85
invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;
move-result-object v5
invoke-virtual {v5}, Ljava/util/Locale;->getCountry()Ljava/lang/String;
move-result-object v5
const-string v6, "US"
.line 297
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_98
.line 298
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_us:Ljava/time/format/DateTimeFormatter;
goto :goto_ea
:cond_98
const-string v6, "BR"
.line 299
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
if-nez v6, :cond_a8
const-string v6, "AU"
.line 300
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_e8
.line 301
:cond_a8
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_eur:Ljava/time/format/DateTimeFormatter;
goto :goto_ea
:cond_ab
if-ne v9, v10, :cond_b2
if-ne v15, v10, :cond_b2
.line 305
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_de:Ljava/time/format/DateTimeFormatter;
goto :goto_ea
:cond_b2
if-ne v9, v14, :cond_e8
if-ne v15, v14, :cond_e8
.line 307
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_in:Ljava/time/format/DateTimeFormatter;
goto :goto_ea
.line 311
:cond_b9
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v5
const/16 v15, 0x17
if-ne v5, v15, :cond_e8
.line 312
invoke-virtual {v0, v11}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 313
invoke-virtual {v0, v9}, Ljava/lang/String;->charAt(I)C
move-result v9
.line 314
invoke-virtual {v0, v13}, Ljava/lang/String;->charAt(I)C
move-result v13
.line 315
invoke-virtual {v0, v8}, Ljava/lang/String;->charAt(I)C
move-result v8
.line 316
invoke-virtual {v0, v7}, Ljava/lang/String;->charAt(I)C
move-result v7
.line 317
invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
move-result v15
if-ne v8, v12, :cond_e8
if-ne v7, v12, :cond_e8
if-ne v5, v14, :cond_e8
if-ne v9, v14, :cond_e8
if-ne v13, v6, :cond_e8
if-ne v15, v10, :cond_e8
.line 326
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->defaultFormatter_23:Ljava/time/format/DateTimeFormatter;
goto :goto_ea
:cond_e8
move-object/from16 v5, p2
.line 330
:goto_ea
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v6
const/16 v7, 0x11
if-lt v6, v7, :cond_117
.line 331
invoke-virtual {v0, v11}, Ljava/lang/String;->charAt(I)C
move-result v6
const/16 v7, 0x5e74
if-ne v6, v7, :cond_10d
.line 333
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v5
sub-int/2addr v5, v2
invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
move-result v5
const/16 v6, 0x79d2
if-ne v5, v6, :cond_10a
.line 334
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_cn_1:Ljava/time/format/DateTimeFormatter;
goto :goto_117
.line 336
:cond_10a
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_cn:Ljava/time/format/DateTimeFormatter;
goto :goto_117
:cond_10d
const v7, 0xb144
if-ne v6, v7, :cond_117
.line 339
sget-object v5, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_kr:Ljava/time/format/DateTimeFormatter;
goto :goto_117
:cond_115
move-object/from16 v5, p2
:cond_117
:goto_117
if-nez v5, :cond_16e
.line 345
new-instance v6, Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-direct {v6, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;)V
.line 346
invoke-virtual {v6, v3}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch(Z)Z
move-result v7
if-eqz v7, :cond_135
.line 347
invoke-virtual {v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->getCalendar()Ljava/util/Calendar;
move-result-object v0
invoke-virtual {v0}, Ljava/util/Calendar;->toInstant()Ljava/time/Instant;
move-result-object v0
.line 348
invoke-static {}, Ljava/time/ZoneId;->systemDefault()Ljava/time/ZoneId;
move-result-object v1
invoke-static {v0, v1}, Ljava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;
move-result-object v0
return-object v0
:cond_135
move v6, v3
.line 352
:goto_136
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v7
if-ge v6, v7, :cond_14b
.line 353
invoke-virtual {v0, v6}, Ljava/lang/String;->charAt(I)C
move-result v7
if-lt v7, v4, :cond_14a
const/16 v8, 0x39
if-le v7, v8, :cond_147
goto :goto_14a
:cond_147
add-int/lit8 v6, v6, 0x1
goto :goto_136
:cond_14a
:goto_14a
move v2, v3
:cond_14b
if-eqz v2, :cond_16e
.line 359
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v2
const/16 v3, 0x8
if-le v2, v3, :cond_16e
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v2
if-ge v2, v1, :cond_16e
.line 360
invoke-static/range {p1 .. p1}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v0
.line 361
invoke-static {v0, v1}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object v0
sget-object v1, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {v1}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object v1
invoke-static {v0, v1}, Ljava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;
move-result-object v0
return-object v0
:cond_16e
if-nez v5, :cond_175
.line 366
invoke-static/range {p1 .. p1}, Ljava/time/LocalDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/LocalDateTime;
move-result-object v0
goto :goto_179
.line 367
:cond_175
invoke-static {v0, v5}, Ljava/time/LocalDateTime;->parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDateTime;
move-result-object v0
:goto_179
return-object v0
.end method
.method protected parseLocalDate(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDate;
.registers 16
if-nez p3, :cond_ea
.line 372
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p2
const/16 v0, 0x8
if-ne p2, v0, :cond_c
.line 373
sget-object p3, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d8:Ljava/time/format/DateTimeFormatter;
.line 376
:cond_c
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p2
const/4 v1, 0x4
const/4 v2, 0x0
const/4 v3, 0x1
const/16 v4, 0xa
const/16 v5, 0x30
if-ne p2, v4, :cond_91
.line 377
invoke-virtual {p1, v1}, Ljava/lang/String;->charAt(I)C
move-result p2
const/4 v6, 0x7
.line 378
invoke-virtual {p1, v6}, Ljava/lang/String;->charAt(I)C
move-result v6
const/16 v7, 0x2f
if-ne p2, v7, :cond_2a
if-ne v6, v7, :cond_2a
.line 380
sget-object p3, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_tw:Ljava/time/format/DateTimeFormatter;
.line 383
:cond_2a
invoke-virtual {p1, v2}, Ljava/lang/String;->charAt(I)C
move-result v6
.line 384
invoke-virtual {p1, v3}, Ljava/lang/String;->charAt(I)C
move-result v8
const/4 v9, 0x2
.line 385
invoke-virtual {p1, v9}, Ljava/lang/String;->charAt(I)C
move-result v9
const/4 v10, 0x3
.line 386
invoke-virtual {p1, v10}, Ljava/lang/String;->charAt(I)C
move-result v10
const/4 v11, 0x5
.line 387
invoke-virtual {p1, v11}, Ljava/lang/String;->charAt(I)C
move-result v11
if-ne v9, v7, :cond_80
if-ne v11, v7, :cond_80
sub-int/2addr v6, v5
mul-int/2addr v6, v4
sub-int/2addr v8, v5
add-int/2addr v6, v8
sub-int/2addr v10, v5
mul-int/2addr v10, v4
sub-int/2addr p2, v5
add-int/2addr v10, p2
const/16 p2, 0xc
if-le v6, p2, :cond_55
.line 392
sget-object p2, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_eur:Ljava/time/format/DateTimeFormatter;
:goto_53
move-object p3, p2
goto :goto_91
:cond_55
if-le v10, p2, :cond_5a
.line 394
sget-object p2, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_us:Ljava/time/format/DateTimeFormatter;
goto :goto_53
.line 396
:cond_5a
invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;
move-result-object p2
invoke-virtual {p2}, Ljava/util/Locale;->getCountry()Ljava/lang/String;
move-result-object p2
const-string v4, "US"
.line 398
invoke-virtual {p2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_6d
.line 399
sget-object p2, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_us:Ljava/time/format/DateTimeFormatter;
goto :goto_53
:cond_6d
const-string v4, "BR"
.line 400
invoke-virtual {p2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_7d
const-string v4, "AU"
.line 401
invoke-virtual {p2, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p2
if-eqz p2, :cond_91
.line 402
:cond_7d
sget-object p2, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_eur:Ljava/time/format/DateTimeFormatter;
goto :goto_53
:cond_80
const/16 p2, 0x2e
if-ne v9, p2, :cond_89
if-ne v11, p2, :cond_89
.line 406
sget-object p3, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_de:Ljava/time/format/DateTimeFormatter;
goto :goto_91
:cond_89
const/16 p2, 0x2d
if-ne v9, p2, :cond_91
if-ne v11, p2, :cond_91
.line 408
sget-object p3, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_in:Ljava/time/format/DateTimeFormatter;
.line 412
:cond_91
:goto_91
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p2
const/16 v4, 0x9
if-lt p2, v4, :cond_ad
.line 413
invoke-virtual {p1, v1}, Ljava/lang/String;->charAt(I)C
move-result p2
const/16 v1, 0x5e74
if-ne p2, v1, :cond_a5
.line 415
sget-object p2, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_cn:Ljava/time/format/DateTimeFormatter;
:goto_a3
move-object p3, p2
goto :goto_ad
:cond_a5
const v1, 0xb144
if-ne p2, v1, :cond_ad
.line 417
sget-object p2, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_d10_kr:Ljava/time/format/DateTimeFormatter;
goto :goto_a3
:cond_ad
:goto_ad
move p2, v2
.line 422
:goto_ae
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v1
if-ge p2, v1, :cond_c2
.line 423
invoke-virtual {p1, p2}, Ljava/lang/String;->charAt(I)C
move-result v1
if-lt v1, v5, :cond_c3
const/16 v4, 0x39
if-le v1, v4, :cond_bf
goto :goto_c3
:cond_bf
add-int/lit8 p2, p2, 0x1
goto :goto_ae
:cond_c2
move v2, v3
:cond_c3
:goto_c3
if-eqz v2, :cond_ea
.line 429
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p2
if-le p2, v0, :cond_ea
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p2
const/16 v0, 0x13
if-ge p2, v0, :cond_ea
.line 430
invoke-static {p1}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide p1
.line 433
invoke-static {p1, p2}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object p1
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
.line 434
invoke-virtual {p2}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p2
.line 432
invoke-static {p1, p2}, Ljava/time/LocalDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/LocalDateTime;
move-result-object p1
.line 435
invoke-virtual {p1}, Ljava/time/LocalDateTime;->toLocalDate()Ljava/time/LocalDate;
move-result-object p1
return-object p1
:cond_ea
if-nez p3, :cond_f1
.line 440
invoke-static {p1}, Ljava/time/LocalDate;->parse(Ljava/lang/CharSequence;)Ljava/time/LocalDate;
move-result-object p1
goto :goto_f5
.line 441
:cond_f1
invoke-static {p1, p3}, Ljava/time/LocalDate;->parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/LocalDate;
move-result-object p1
:goto_f5
return-object p1
.end method
.method protected parseZonedDateTime(Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)Ljava/time/ZonedDateTime;
.registers 18
move-object/from16 v0, p1
if-nez p2, :cond_11c
.line 446
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v1
const/4 v2, 0x4
const/16 v3, 0x13
const/4 v4, 0x0
const/4 v5, 0x1
const/16 v6, 0x30
if-ne v1, v3, :cond_b7
.line 447
invoke-virtual {v0, v2}, Ljava/lang/String;->charAt(I)C
move-result v1
const/4 v7, 0x7
.line 448
invoke-virtual {v0, v7}, Ljava/lang/String;->charAt(I)C
move-result v7
const/16 v8, 0xa
.line 449
invoke-virtual {v0, v8}, Ljava/lang/String;->charAt(I)C
move-result v9
const/16 v10, 0xd
.line 450
invoke-virtual {v0, v10}, Ljava/lang/String;->charAt(I)C
move-result v10
const/16 v11, 0x10
.line 451
invoke-virtual {v0, v11}, Ljava/lang/String;->charAt(I)C
move-result v11
const/16 v12, 0x3a
if-ne v10, v12, :cond_b7
if-ne v11, v12, :cond_b7
const/16 v10, 0x2d
if-ne v1, v10, :cond_48
if-ne v7, v10, :cond_48
const/16 v1, 0x54
if-ne v9, v1, :cond_40
.line 455
sget-object v1, Ljava/time/format/DateTimeFormatter;->ISO_LOCAL_DATE_TIME:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_b9
:cond_40
const/16 v1, 0x20
if-ne v9, v1, :cond_b7
.line 457
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->defaultFormatter:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_b9
:cond_48
const/16 v9, 0x2f
if-ne v1, v9, :cond_52
if-ne v7, v9, :cond_52
.line 460
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_tw:Ljava/time/format/DateTimeFormatter;
goto/16 :goto_b9
.line 462
:cond_52
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v7
.line 463
invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
move-result v11
const/4 v12, 0x2
.line 464
invoke-virtual {v0, v12}, Ljava/lang/String;->charAt(I)C
move-result v12
const/4 v13, 0x3
.line 465
invoke-virtual {v0, v13}, Ljava/lang/String;->charAt(I)C
move-result v13
const/4 v14, 0x5
.line 466
invoke-virtual {v0, v14}, Ljava/lang/String;->charAt(I)C
move-result v14
if-ne v12, v9, :cond_a7
if-ne v14, v9, :cond_a7
sub-int/2addr v7, v6
mul-int/2addr v7, v8
sub-int/2addr v11, v6
add-int/2addr v7, v11
sub-int/2addr v13, v6
mul-int/2addr v13, v8
sub-int/2addr v1, v6
add-int/2addr v13, v1
const/16 v1, 0xc
if-le v7, v1, :cond_7c
.line 471
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_eur:Ljava/time/format/DateTimeFormatter;
goto :goto_b9
:cond_7c
if-le v13, v1, :cond_81
.line 473
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_us:Ljava/time/format/DateTimeFormatter;
goto :goto_b9
.line 475
:cond_81
invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;
move-result-object v1
invoke-virtual {v1}, Ljava/util/Locale;->getCountry()Ljava/lang/String;
move-result-object v1
const-string v7, "US"
.line 477
invoke-virtual {v1, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_94
.line 478
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_us:Ljava/time/format/DateTimeFormatter;
goto :goto_b9
:cond_94
const-string v7, "BR"
.line 479
invoke-virtual {v1, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v7
if-nez v7, :cond_a4
const-string v7, "AU"
.line 480
invoke-virtual {v1, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_b7
.line 481
:cond_a4
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_eur:Ljava/time/format/DateTimeFormatter;
goto :goto_b9
:cond_a7
const/16 v1, 0x2e
if-ne v12, v1, :cond_b0
if-ne v14, v1, :cond_b0
.line 485
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_de:Ljava/time/format/DateTimeFormatter;
goto :goto_b9
:cond_b0
if-ne v12, v10, :cond_b7
if-ne v14, v10, :cond_b7
.line 487
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_in:Ljava/time/format/DateTimeFormatter;
goto :goto_b9
:cond_b7
move-object/from16 v1, p2
.line 493
:goto_b9
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v7
const/16 v8, 0x11
if-lt v7, v8, :cond_e3
.line 494
invoke-virtual {v0, v2}, Ljava/lang/String;->charAt(I)C
move-result v2
const/16 v7, 0x5e74
if-ne v2, v7, :cond_dc
.line 496
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v1
sub-int/2addr v1, v5
invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v2, 0x79d2
if-ne v1, v2, :cond_d9
.line 497
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_cn_1:Ljava/time/format/DateTimeFormatter;
goto :goto_e3
.line 499
:cond_d9
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_cn:Ljava/time/format/DateTimeFormatter;
goto :goto_e3
:cond_dc
const v7, 0xb144
if-ne v2, v7, :cond_e3
.line 502
sget-object v1, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->formatter_dt19_kr:Ljava/time/format/DateTimeFormatter;
:cond_e3
:goto_e3
move v2, v4
.line 507
:goto_e4
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v7
if-ge v2, v7, :cond_f8
.line 508
invoke-virtual {v0, v2}, Ljava/lang/String;->charAt(I)C
move-result v7
if-lt v7, v6, :cond_f9
const/16 v8, 0x39
if-le v7, v8, :cond_f5
goto :goto_f9
:cond_f5
add-int/lit8 v2, v2, 0x1
goto :goto_e4
:cond_f8
move v4, v5
:cond_f9
:goto_f9
if-eqz v4, :cond_11e
.line 514
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v2
const/16 v4, 0x8
if-le v2, v4, :cond_11e
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v2
if-ge v2, v3, :cond_11e
.line 515
invoke-static/range {p1 .. p1}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v0
.line 516
invoke-static {v0, v1}, Ljava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
move-result-object v0
sget-object v1, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {v1}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object v1
invoke-static {v0, v1}, Ljava/time/ZonedDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
move-result-object v0
return-object v0
:cond_11c
move-object/from16 v1, p2
:cond_11e
if-nez v1, :cond_125
.line 521
invoke-static/range {p1 .. p1}, Ljava/time/ZonedDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/ZonedDateTime;
move-result-object v0
goto :goto_129
.line 522
:cond_125
invoke-static {v0, v1}, Ljava/time/ZonedDateTime;->parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/ZonedDateTime;
move-result-object v0
:goto_129
return-object v0
.end method
.method public write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Lcom/alibaba/fastjson/serializer/BeanContext;)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 578
iget-object p1, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
.line 579
invoke-virtual {p3}, Lcom/alibaba/fastjson/serializer/BeanContext;->getFormat()Ljava/lang/String;
move-result-object p3
.line 580
check-cast p2, Ljava/time/temporal/TemporalAccessor;
invoke-direct {p0, p1, p2, p3}, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->write(Lcom/alibaba/fastjson/serializer/SerializeWriter;Ljava/time/temporal/TemporalAccessor;Ljava/lang/String;)V
return-void
.end method
.method public write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 531
iget-object p3, p1, Lcom/alibaba/fastjson/serializer/JSONSerializer;->out:Lcom/alibaba/fastjson/serializer/SerializeWriter;
if-nez p2, :cond_9
.line 533
invoke-virtual {p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
goto/16 :goto_89
:cond_9
if-nez p4, :cond_f
.line 536
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p4
.line 539
:cond_f
const-class v0, Ljava/time/LocalDateTime;
if-ne p4, v0, :cond_82
.line 540
sget-object p4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseISO8601DateFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {p4}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->getMask()I
move-result p4
.line 541
check-cast p2, Ljava/time/LocalDateTime;
.line 542
invoke-virtual {p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getDateFormatPattern()Ljava/lang/String;
move-result-object v0
const-string/jumbo v1, "yyyy-MM-dd\'T\'HH:mm:ss"
if-nez v0, :cond_66
and-int/2addr p4, p5
if-nez p4, :cond_65
.line 545
sget-object p4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseISO8601DateFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {p1, p4}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result p4
if-eqz p4, :cond_30
goto :goto_65
.line 547
:cond_30
sget-object p4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteDateUseDateFormat:Lcom/alibaba/fastjson/serializer/SerializerFeature;
invoke-virtual {p1, p4}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
move-result p4
if-eqz p4, :cond_50
.line 548
invoke-virtual {p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getFastJsonConfigDateFormatPattern()Ljava/lang/String;
move-result-object p4
if-eqz p4, :cond_4d
.line 549
invoke-virtual {p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getFastJsonConfigDateFormatPattern()Ljava/lang/String;
move-result-object p4
invoke-virtual {p4}, Ljava/lang/String;->length()I
move-result p4
if-lez p4, :cond_4d
.line 550
invoke-virtual {p1}, Lcom/alibaba/fastjson/serializer/JSONSerializer;->getFastJsonConfigDateFormatPattern()Ljava/lang/String;
move-result-object v0
goto :goto_66
.line 552
:cond_4d
sget-object v0, Lcom/alibaba/fastjson/JSON;->DEFFAULT_DATE_FORMAT:Ljava/lang/String;
goto :goto_66
.line 555
:cond_50
invoke-virtual {p2}, Ljava/time/LocalDateTime;->getNano()I
move-result p1
if-nez p1, :cond_57
goto :goto_65
:cond_57
const p4, 0xf4240
.line 558
rem-int/2addr p1, p4
if-nez p1, :cond_61
const-string/jumbo v0, "yyyy-MM-dd\'T\'HH:mm:ss.SSS"
goto :goto_66
:cond_61
const-string/jumbo v0, "yyyy-MM-dd\'T\'HH:mm:ss.SSSSSSSSS"
goto :goto_66
:cond_65
:goto_65
move-object v0, v1
:cond_66
:goto_66
if-eqz v0, :cond_6c
.line 567
invoke-direct {p0, p3, p2, v0}, Lcom/alibaba/fastjson/parser/deserializer/Jdk8DateCodec;->write(Lcom/alibaba/fastjson/serializer/SerializeWriter;Ljava/time/temporal/TemporalAccessor;Ljava/lang/String;)V
goto :goto_89
.line 569
:cond_6c
sget-object p1, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {p1}, Ljava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
move-result-object p1
invoke-virtual {p2, p1}, Ljava/time/LocalDateTime;->atZone(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
move-result-object p1
invoke-virtual {p1}, Ljava/time/ZonedDateTime;->toInstant()Ljava/time/Instant;
move-result-object p1
invoke-virtual {p1}, Ljava/time/Instant;->toEpochMilli()J
move-result-wide p1
invoke-virtual {p3, p1, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeLong(J)V
goto :goto_89
.line 572
:cond_82
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p1
invoke-virtual {p3, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeString(Ljava/lang/String;)V
:goto_89
return-void
.end method