gpt4 book ai didi

ServiceStack 日期时间处理

转载 作者:行者123 更新时间:2023-12-01 04:50:48 27 4
gpt4 key购买 nike

我遇到了 ServiceStack 使用的 DateTime 格式的问题。

例如,我有一个像这样的简单请求对象。

public class GetAllUpdatedStudents : IReturn<GetAllUpdatedStudentsResponse>
{
public DateTime LastUpdate { get; set; }
}

当提交 12/10/2016 的 DateTime(mm/dd/yyyy) 时,ServiceStack 将其转换为 (dd/mm/yyyy) 的 DateTime 格式,因此系统认为是 10 月 12 日而不是 12 月 10 日。

在将 DateTime 属性绑定(bind)到请求对象时,如何告诉 ServiceStack 不要这样做以及我们使用 mm/dd/yyyy 的格式?

最佳答案

通过网络发送 DateTime 的最合适和最不模糊的方法是始终使用 ISO 8601 Date Format . 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);
};

但我建议不要这样做,因为您的服务不能互操作。

关于ServiceStack 日期时间处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244609/

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