简体   繁体   English

如何将日期时间从sqlserver转换为java.util.Date

[英]How to convert a datetime from sqlserver to java.util.Date

I am getting a row from a table with sql server database (with Asp net core as web api) using retrofit library in android and as far as I understood I must consider an string equivalent to datetime and then convert it to java.util.Date. 我正在使用android中的改造库从具有sql server数据库的表中获取一行(以asp net core作为web api),据我了解,我必须考虑一个等效于datetime的字符串,然后将其转换为java.util.Date 。 An example of retrieved date time is 2018-10-29T19:56:59 . 检索到的日期时间的示例是2018-10-29T19:56:59 Is there anyway to convert datetime to java.util.Date directly? 反正有将datetime直接转换为java.util.Date吗? the code is shown below. 代码如下所示。

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;
...
}

Change your private Date OffTimeout to String, something like this : 将您的私有Date OffTimeout更改为String,如下所示:

@SerializedName("OffTimeout")
private String OffTimeout;

And use this method to parse your date. 并使用此方法解析您的日期。

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;
    }

Use: 采用:

 Date mydate = fromStringToDate(yourOffTimeOut, "yyyy-MM-dd'T'HH:mm:ss");

Try JodaTime with custom deserializer: 使用自定义解串器尝试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());
      }
    }

Another possible solution would be to convert it to Unix timestamp on a server before sending it. 另一种可能的解决方案是在发送之前将其转换为服务器上的Unix时间戳。 Timestamp is much more robust format for dealing with dates / times 时间戳是用于处理日期/时间的更健壮的格式

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM