我从一个带有sql server数据库的表(使用Asp net core作为web api)中使用android中的改造库得到一行,据我所知,我必须考虑一个等同于datetime的字符串,然后将其转换为java。 util.Date。检索日期时间的示例是2018-10-29T19:56:59
。有没有将datetime直接转换为java.util.Date?
代码如下所示。
public class Food {
@SerializedName("Id")
private long Id;
@SerializedName("Name")
private String Name;
@SerializedName("Content")
private String Content;
@SerializedName("IsActive")
private boolean IsActive;
@SerializedName("DoesExist")
private boolean DoesExist;
@SerializedName("Cost")
private int Cost;
@SerializedName("OffPercentage")
private int OffPercentage;
@SerializedName("OffTimeout")
private Date OffTimeout;
...
}
答案 0 :(得分:1)
使用自定义反序列化器尝试JodaTime:
//GSON config
Gson gson = new GsonBuilder()
.registerTypeAdapter(DateTime.class, new DateTimeDeserializer ())
.create();
// DateTimeDeserializer.class
public class DateTimeDeserializer implements JsonDeserializer<DateTime > {
@Override
public DateTime deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context)
throws JsonParseException {
return DateTime.parse(json.getAsString());
}
}
答案 1 :(得分:0)
另一种可能的解决方案是在发送之前将其转换为服务器上的Unix时间戳。时间戳是处理日期/时间的更健壮的格式
答案 2 :(得分:0)
将您的私人Date OffTimeout更改为String,如下所示:
@SerializedName("OffTimeout")
private String OffTimeout;
并使用此方法来解析您的日期。
public static Date fromStringToDate(String stringDate, String pattern){
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
Date date = format.parse(stringDate);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
使用:
Date mydate = fromStringToDate(yourOffTimeOut, "yyyy-MM-dd'T'HH:mm:ss");