gpt4 book ai didi

java - Android:无法从字符串值构造 java.sql.Timestamp 的实例

转载 作者:行者123 更新时间:2023-11-30 10:43:30 25 4
gpt4 key购买 nike

我开发了一个 REST API,我正在尝试使用 Android 连接到它。下面是我的代码。

private void restCall()
{

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

YourEndpoints request = retrofit.create(YourEndpoints.class);



SetupBean setupBean = new SetupBean();
setupBean.setIdPatient(1);
setupBean.setCircleType(1);
setupBean.setFamiliarity(1);
setupBean.setValence(2);
setupBean.setArousal(3);
setupBean.setDateCreated(Common.getSQLCurrentTimeStamp());
setupBean.setLastUpdated(Common.getSQLCurrentTimeStamp());

Call<ResponseBody> yourResult = request.insertSetup(setupBean);
yourResult.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {

try {
Log.d("MainActivity", "RESPONSE: " + response.errorBody().string());
}
catch(Exception e)
{
e.printStackTrace();
}

}

@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
try {
t.printStackTrace();
Log.d("MainActivity", "RESPONSE: "+"FAILED");
}
catch(Exception e)
{
e.printStackTrace();
}
}

});


}

当我运行它时,它显示以下错误

Can not construct instance of java.sql.Timestamp from String value 'Jun 9, 2016 4:24:37 PM': not a valid representation (error: Failed to parse Date value 'Jun 9, 2016 4:24:37 PM': Can not parse date "Jun 9, 2016 4:24:37 PM": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

看来转换Timestamp 有问题。在我的 Bean 类中,下面是 Timestamp 的定义方式。

public void setDateCreated(Timestamp dateCreated) {
this.dateCreated = dateCreated;
}

public Timestamp getLastUpdated() {
return lastUpdated;
}

在我的 restCall() 方法中,我调用了 Common.getSQLCurrentTimeStamp() 来生成时间戳。下面是该方法。

public static Timestamp getSQLCurrentTimeStamp()
{
java.util.Date date = new java.util.Date();
Timestamp t = new Timestamp(date.getTime());
System.out.println(t);
return t;
}

所以,当我运行 restCall() 方法时,为什么我得到这个 Can not construct instance of java.sql.Timestamp from String value 'Jun 9, 2016 4:24 :37 PM':不是有效的表示(错误:无法解析日期值'Jun 9,2016 4:24:37 PM':无法解析日期“Jun 9,2016 4:24:37 PM”:与不兼容任何标准形式(“yyyy-MM-dd'T'HH:mm:ss.SSSZ”、“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”、“EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) 错误?我该如何解决?

最佳答案

我自己解决了这个问题。 Retrofit 2 使用 GSON,因此您必须手动提供日期时间转换器

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

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

关于java - Android:无法从字符串值构造 java.sql.Timestamp 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com