【问题标题】:Wrong serialization of timedate in MVCMVC 中时间日期的错误序列化
【发布时间】:2019-07-30 20:35:41
【问题描述】:

在我的应用程序中,我使用的是 MVC 架构。我的控制器返回有关客户端的数据,例如生日。客户端信息被转换为 JSON 对象并传递给视图。

现在的问题是我的 DateTime 字段有点奇怪。我从视图中传递的日期是正确的:

{29.07.1978 0:00:00}

转成json后是:

/日期(270511200000)/

现在奇怪的部分来了——它返回了

28.07.1978

当我尝试通过以下方式将 json 日期转换为 Date 来查找更多细节时:

var date = new Date(parseInt(self.FormData.Person.BirthDate().substr(6)));

我明白了

1978 年 7 月 28 日星期五 23:00:00 GMT+0100

但是当我输入一些较新的日期 - 例如,1.1.2000,我得到一个正确的日期 1.1.2000。

对于其他一些日期,我得到了

1959 年 7 月 28 日星期五 22:00:00 GMT+0200

知道为什么会这样吗?我的时区是 GMT+1。

非常感谢您的任何意见:)

【问题讨论】:

  • 这并不奇怪。 29.07.1978 0:00:00 Zulu 在 28.07。在您当地的时区。
  • @JonasWilms - 谢谢,但我不明白为什么我从 1980 年起得到正确的结果
  • 因为您的国家在 1979 年引入了夏令时 timeanddate.com/time/zone/czech-republic/prague

标签: javascript c#


【解决方案1】:

根据 Jonas Wilms 下面的回答 - `

因为 1979 年在贵国引入夏令时 timeanddate.com/time/zone/czech-republic/prague

为我解决这个问题的是

if (birthYear <= 1979) {
                if (self.FormData.Person.BirthDate() != null) {
                    self.FormData.Person.BirthDate(moment(self.FormData.Person.BirthDate()).utcOffset(2).format('DD.MM.YYYY'));
                }
            }
            else {
                if (self.FormData.Person.BirthDate() != null) {
                    self.FormData.Person.BirthDate(moment(self.FormData.Person.BirthDate()).format('DD.MM.YYYY'));
                }
            }

【讨论】:

    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2015-12-25
    • 2015-09-01
    相关资源
    最近更新 更多