邮递员将日期时间显示为未知格式



我正在使用Servicestack和Ormlite进行我的项目,并与postman一起进行测试。 我用于时间戳的 C# 类型是 DateTime,它正确地处理进出 MySql 数据库的信息。 当我在响应中返回值时,该值看起来是正确的,但是当在 Postman 中检查响应或只是浏览到请求 url 时,我看到的值是 [ { "id": 1, "accountType": 1, "name": "Mr J Smith", "memberSince": "/Date(1539189581000-0000)/", "phone": "8138138138", "email": "jjj@jjj.com", "emailVerified": false } ]我发送的值是 成员自 = {10/10/2018 12:39:41 PM}

为什么会有这种差异? 是不同的格式吗? 如何全局转换它?

更新

我将其添加到我的初始化例程中,它可以工作。 这是最好的方法吗?

JsConfig<DateTime>.SerializeFn = time => new DateTime(time.Ticks, DateTimeKind.Utc).ToString("o");
JsConfig<DateTime?>.SerializeFn = time => time != null ? new DateTime(time.Value.Ticks, DateTimeKind.Utc).ToString("o") : null;
JsConfig.DateHandler = DateHandler.ISO8601;

我建议您检查正在使用的序列化程序,它与邮递员无关,是您从后端返回数据的方式。

例如:

return Json(
new DataSourceResult
{
Data = "testing"
});

当序列化程序在 ajax/javascript 端发送此数据时,我需要将其Data为小写data,因为序列化程序将第一个字母设置为小写。 因此,首先,查看序列化程序通过网络发送的内容,并尝试在后端更改日期时间的格式。正如我所看到的,序列化程序获取所有日期时间并以该格式转换它们。尝试发送日期的字符串表示形式而不是日期时间,并查看您在另一端收到的内容。应该是普通字符串。 希望这有帮助

您可以将 ServiceStack.Text 配置为将 ISO8601 Date 格式与以下内容一起使用:

JsConfig.Init(new Config {
DateHandler = DateHandler.ISO8601
});

最新更新