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

时间:2018-10-11 01:14:21

标签: c# servicestack

我正在为项目使用Servicestack和Ormlite并与邮递员进行测试。 我用于时间戳的C#类型是DateTime,它可以正确处理往返MySql数据库的信息。当我在响应中返回值时,该值看起来正确,但是当在邮递员中检查响应或只是浏览至请求url时,我看到的值是 [ { "id": 1, "accountType": 1, "name": "Mr J Smith", "memberSince": "/Date(1539189581000-0000)/", "phone": "8138138138", "email": "jjj@jjj.com", "emailVerified": false } ] 我寄出的价值是 MemberSince = {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;

2 个答案:

答案 0 :(得分:1)

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

例如:

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

当序列化器将此数据发送到ajax / javascript一侧的单词Data时,我需要将其读为小写data,因为序列化器会将第一个字母设置为小写。 因此,首先,请查看串行器通过电线发送的内容,并尝试在后端更改DateTime的格式。如我所见,序列化程序将使用所有DateTime并将其转换为该格式。尝试发送代替日期时间的字符串表示日期,并查看另一端收到的信息。应该是纯字符串。 希望这会有所帮助

答案 1 :(得分:1)

您可以将ServiceStack.Text配置为通过以下方式使用ISO8601日期格式:

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