如何将日期时间转换为日期?

How to convert DateTime to Date?

Cotacoes class 中,我有 creation_date 字段,它是一个日期,但在服务器上它是一个日期时间。收到JSON后,出现以下错误:

java.text.ParseException: Failed to parse date ["2018-11-05T12:12:37.307']: No time zone indicator

如何解决这个问题? 我使用 retrofit 从服务器拨打和接听电话。

科塔科斯:

public class Cotacoes implements Serializable {

    private static final long serialVersionUID = 842387749350567455L;
    @SerializedName("quotation_id")
    @Expose
    private int quotation_id;
    //private int transaction_id;
    @SerializedName("pecas")
    @Expose
    private List<Pecas> pecas;
    @SerializedName("creation_date")
    @Expose
    private Date creation_date;
   // private int duration;
    @SerializedName("brand")
    @Expose
    private String brand;
    @SerializedName("vehicle")
    @Expose
    private String vehicle;

....
getters and setters
}

改造:

public class APIRetrofit {
    public static final String BASE_URL = "http://server.net/";
    private static Retrofit retrofit = null;

    private static Gson gson = new GsonBuilder()
            .create();


    public static Retrofit getRetrofitClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
        return retrofit;
    }
}

接口:

public interface APIService {

    interface ReturnFutureCallback<T> {
        void onSuccess(T retorno);

        void onFailure(T retorno);
    }

    @POST("/cotacao")
    @FormUrlEncoded
    Call<JsonQuotationResponse> listaCotacao(@Header("Authorization") String token, @Field("seller_company_id") String seller_company_id);

}

您必须创建 JsonDeserializer 以将 DateTime 解析为自定义的 Date 对象。

更多详情可以参考以下链接:

https://kylewbanks.com/blog/String-Date-Parsing-with-GSON-UTC-Time-Zone

gson fails to parse using GsonBuilder.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")

  • 我认为,在服务器上,它是 longtime 或 String,所以 creation_date 字段,它是 longtime 或 String