亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 GSON 反序列化 json 時間戳

使用 GSON 反序列化 json 時間戳

米琪卡哇伊 2021-10-20 15:12:56
我有一個 json 字符串,例如{"start_time": "10:00 AM", "end_time": "11:00 PM"}如果我使用 GSON 使用 POJO 反序列化,那么如您所見,這些將映射到我的類中的 String 變量。最終,我想使用用戶提供的時間,看看它是否在范圍內。我能想到的唯一方法是,每次我得到時間,然后我將這些字符串變量轉換為對象(無論是 Joda 時間、日期、本地時間 .. 等),然后進行比較。有沒有更好的辦法?我可以讓 GSON 將字符串直接反序列化為時間對象嗎?或者以某種方式保存在比較期間始終進行這些轉換的步驟?或者我提出的方式真的是正確的設計?
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

您可以使用GsonBuilder將時間解析為日期,指定日期格式:


    GsonBuilder gsonBuilder = new GsonBuilder();

    gsonBuilder.setDateFormat("HH:mm a");

    Gson gson = gsonBuilder.create();

    Pojo fromJson = gson.fromJson(<string>, Pojo.class);

POJO 字段將如下所示(如果需要,請重命名):


    private Date start_time;

    private Date end_time;


查看完整回答
反對 回復 2021-10-20
?
DIEA

TA貢獻1820條經驗 獲得超3個贊

你對圖書館要求不高。您可以自己用純 Java 編寫該類,因為您只比較一天中的 24 小時。你可以這樣:


public class TimeKeeper implements Comparable<TimeKeeper> {

    byte startHour;

    byte startMinute;

    byte endHour;

    byte endMinute;

    public TimeKeeper(String start, String end) {

        startHour = parseHour(start);

        startMinute = parseMinute(start);

        endHour = parseHour(end);

        endMinute = parseMinute(end);

    }

    public byte parseHour(String time) {

        byte hour = Byte.valueOf(String.split(time, ":")[0]);

        if(time.contains("PM") {

            hour += 12;

        }

        return hour;

    }

    public byte parseMinute(String time) {

         return Byte.valueOf(String.valueOf(time, ":")[1].substring(0, 2));

    }

    @Override

    public int compareTo(TimeKeeper tk) {

        int diff = startHour - tk.startHour;

        if(diff == 0) {

            return startMinute - tk.startMinute;

        }

        return diff;

    }

}


查看完整回答
反對 回復 2021-10-20
  • 3 回答
  • 0 關注
  • 452 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號