我对DateTime格式有问题,ServiceStack正在使用这种格式。
例如,我有一个简单的请求对象,如下所示。
public class GetAllUpdatedStudents : IReturn<GetAllUpdatedStudentsResponse>
{
public DateTime LastUpdate { get; set; }
}当提交2016年10月12日的DateTime(mm/dd/yyyy)时,ServiceStack将其转换为DateTime格式(dd/mm/yyyy),因此系统认为是在10月12日而不是12月10日。
当将ServiceStack属性绑定到请求对象时,我如何告诉ServiceStack不要这样做,并告诉我们mm/dd/yyyy的格式?
发布于 2016-12-20 15:37:44
通过连线发送日期时间的最适当和最不含糊的方法是始终使用ISO 8601日期格式。ServiceStack支持多种日期格式,IS0 8601的变体很多,但ServiceStack中没有支持日期前一个月格式的配置,比如mm/dd/yyyy,它被解释为dd/mm/yyyy。但是,为了避免任何歧义,理想情况下,您应该发送YYYY-MM-DD格式。
如果需要接受MM/DD/YYYY,可以将其更改为字符串,例如:
public class GetAllUpdatedStudents : IReturn<GetAllUpdatedStudentsResponse>
{
public string LastUpdate { get; set; }
}然后在服务实现中使用首选的DateTime格式解析它。
您可以重写内置的DateTime序列化,以特定的日期格式解析它,如下所示:
JsConfig.DeSerializeFn = str => {
return DateTime.ParseExact(str,"MM/dd/yyyy",null);
};但我建议不要这样做,因为您的服务不可能互操作。
https://stackoverflow.com/questions/41244609
复制相似问题