Java 将DateTimeOffset从Android发送到.NET Web API
我正在使用适用于Android的Azure移动应用程序SDKJava 将DateTimeOffset从Android发送到.NET Web API,java,android,gson,azure-mobile-services,datetimeoffset,Java,Android,Gson,Azure Mobile Services,Datetimeoffset,我正在使用适用于Android的Azure移动应用程序SDK public class MyClass { public String Id; public String Code; public DateTimeOffset ClientCreatedAt; } MyClass myClass = new MyClass(); myClass.Id = "1234567890"; myClass.Code = "dfgdrvyet"; myClass.ClientCr
public class MyClass {
public String Id;
public String Code;
public DateTimeOffset ClientCreatedAt;
}
MyClass myClass = new MyClass();
myClass.Id = "1234567890";
myClass.Code = "dfgdrvyet";
myClass.ClientCreatedAt = new DateTimeOffset(new Date());
它的用途如下:
MobileServiceSyncTable<MyClass> myClassSyncTable = _client.getSyncTable(MyClass.class);
ListenableFuture<MyClass> responseFuture = myClassSyncTable.insert(myClass);
当我将DateTimeOffset
替换为Date
时,该值被正确序列化
因此,我的问题是:
如果回答不晚的话。我也有同样的问题。您可以使用
Calendar c=Calendar.getInstance();
SimpleDataFormat df=新的SimpleDataFormat(“yyyy-MM-dd'T'HH:MM:ss.SSS'Z'”);
字符串formattedDate=df.format(c.getTime())代码>
解析日期。IMHO将更容易使用Gson和凌空抽射。我想你可以把它读成字符串,然后把它转换成日期。DateTimeOffset
实际上是Date
的一个哑包装。这里是它的全部
/**
* Represents a point in time, typically expressed as a date and time of day
*/
public class DateTimeOffset extends Date {
public DateTimeOffset(Date date) {
this.setTime(date.getTime());
}
}
我举手示意,决定改用字符串,并通过DateTime.parse(string)
处理joda time的DateTime类
然而,最好的替代方法可能是通过MobileServiceClient.registerSerializer(…)
注册您自己的serialiser,但是使用它们的包装器不会得到任何有用的东西
这是垃圾
编辑:使用自定义(反)序列化器似乎工作得很好:
private class DateTimeSerialiser implements JsonSerializer<DateTime>, JsonDeserializer<DateTime> {
@Override
public JsonElement serialize(final DateTime src, final Type typeOfSrc, final JsonSerializationContext context) {
return new JsonPrimitive(src.toString());
}
@Override
public DateTime deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException {
return DateTime.parse(json.getAsString());
}
}
这是关于DateTimeOffset Azure SDK类的吗?我的意思是在类中使用字符串,但以这种格式类型插入日期。类似这样的`公共类MyClass{public String Id;public String ClientCreatedAt;}MyClass inst=new MyClass();inst.ClientCreatedAt=df.Format(c.getTime)`
private class DateTimeSerialiser implements JsonSerializer<DateTime>, JsonDeserializer<DateTime> {
@Override
public JsonElement serialize(final DateTime src, final Type typeOfSrc, final JsonSerializationContext context) {
return new JsonPrimitive(src.toString());
}
@Override
public DateTime deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException {
return DateTime.parse(json.getAsString());
}
}
private DateTime date;