Android 改造在 post 请求中更改日期格式 "yyyy-MM-dd hh:mm:ss"

Android retrofit change the date format "yyyy-MM-dd hh:mm:ss" in a post request

我在 android 和改造方面遇到问题,希望您能帮助我或给我提供解决方法的线索。 我用 json 向 php REST api 发送了一个 post 请求。日期格式为“yyyy-MM-dd hh:mm:ss”,因为数据将存储在 mysql 数据库中。 InformeEnvio 对象被转换为 json 并且格式使用 gson 设置,但在 php 服务器中,日期以这种格式到达:“2021 年 10 月 22 日 6:55:55 下午”,尽管 json android 控制台中显示的格式是这样的:“2021-10-22 18:55:55”。另外,我向 postman 发出请求,json 字符串和日期以正确的格式到达。 这是改装post请求代码和pojo代码。

谢谢。

    @Headers({
            "Accept: application/json",
            "Content-Type: application/json"
    })
    Call<PostResponse> saveInformeEnvio(@Body InformeEnvio item);


public class InformeEnvio {
    private Visita visita;
    private InformeCompra informeCompra;
    private List<InformeCompraDetalle> informeCompraDetalles;
    private List<ImagenDetalle> imagenDetalles;
    private List<ProductoExhibido> productosEx;

    public Visita getVisita() {
        return visita;
    }

    public void setVisita(Visita visita) {
        this.visita = visita;
    }

    public InformeCompra getInformeCompra() {
        return informeCompra;
    }

    public void setInformeCompra(InformeCompra informeCompra) {
        this.informeCompra = informeCompra;
    }

    public List<InformeCompraDetalle> getInformeCompraDetalles() {
        return informeCompraDetalles;
    }

    public void setInformeCompraDetalles(List<InformeCompraDetalle> informeCompraDetalles) {
        this.informeCompraDetalles = informeCompraDetalles;
    }

    public List<ImagenDetalle> getImagenDetalles() {
        return imagenDetalles;
    }

    public void setImagenDetalles(List<ImagenDetalle> imagenDetalles) {
        this.imagenDetalles = imagenDetalles;
    }

    public List<ProductoExhibido> getProductosEx() {
        return productosEx;
    }

    public void setProductosEx(List<ProductoExhibido> productosEx) {
        this.productosEx = productosEx;
    }
    public String toJson(InformeEnvio informe) {
        //  this.inf_visitasIdlocal=informe.getVisitasId();
       
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm:ss").create();

        String informejson=gson.toJson(informe.informeCompra);
        String JSON = gson.toJson(informe);
        return  JSON;
       
      

       }
   }

我认为您必须在创建 RestAdapter 时配置它。你可以给一个 GsonConverter 来改造你的日期格式。像这样的代码应该可以工作:

Gson gson = new GsonBuilder()
    .setDateFormat("yyyy-MM-dd hh:mm:ss")
    .create();

RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(API_BASE_URL)
    .setConverter(new GsonConverter.create(gson))
    .build();

根据您构建客户端的方式,您必须使用不同的方法:

Retrofit retrofit = new Retrofit.Builder()
      .baseUrl(API_BASE_URL)
      .addConverterFactory(GsonConverterFactory.create(gson))
      .build();