当前位置: 首页 > 知识库问答 >
问题:

剑道网格日期时间列显示不正确的日期

姚善
2023-03-14

我有一个剑道网格,它有一个datetime列,当从数据库中获取日期时,我们得到了正确的日期,但在显示日期时,日期发生了变化。例如:DB日期为2017年6月7日,但在网站上显示时,考虑到年月日,日期改为2017年6月6日。谁能帮我一下吗。我们的数据库和网站均位于纽约地区。

共有1个答案

冯奇思
2023-03-14

剑道UI数据源使用JavaScript日期对象表示日期。这些对象始终位于客户端的时区中,这可能会导致日期的更改。一种可能的选择是使用UTC日期:

http://docs.telerik.com/aspnet-mvc/helpers/grid/how-to/editing/utc-time-on-both-server-and-client

使用带有setter和getter的ViewModel,将DateTimeKind显式设置为UTC。

private DateTime birthDate;
public DateTime BirthDate
{
    get { return this.birthDate; }
    set {
        this.birthDate = new DateTime(value.Ticks, DateTimeKind.Utc);
    }
}

使用DataSourcerequestEnd事件截取传入日期字段,并将其替换为时差。

@(Html.Kendo().Grid<KendoUIMVC5.Models.Person>().Name("persons")
    .DataSource(dataSource => dataSource
        .Ajax()
        .Events(ev=>ev.RequestEnd("onRequestEnd"))
    )
    // ...
)

<script>
    var onRequestEnd = function(e) {
        if (e.response.Data && e.response.Data.length) {
            var data = e.response.Data;
            if (this.group().length && e.type == "read") {
                handleGroups(data);
            } else {
                loopRecords(data);
            }
        }
    }

    function handleGroups(groups) {
        for (var i = 0; i < groups.length; i++) {
            var gr = groups[i];
            offsetDateFields(gr); //handle the Key variable as well
            if (gr.HasSubgroups) {
                handleGroups(gr.Items)
            } else {
                loopRecords(gr.Items);
            }
        }
    }

    function loopRecords(persons) {
        for (var i = 0; i < persons.length; i++) {
            var person = persons[i];
            offsetDateFields(person);
        }
    }

    function offsetDateFields(obj) {
        for (var name in obj) {
            var prop = obj[name];
            if (typeof (prop) === "string" && prop.indexOf("/Date(") == 0) {
                obj[name] = prop.replace(/\d+/, function (n) {
                    var offsetMiliseconds = new Date(parseInt(n)).getTimezoneOffset() * 60000;
                    return parseInt(n) + offsetMiliseconds
                });
            }
        }
    }
</script>
 类似资料:
  • 值为ReinsDepositAmount ** ** 我最近在kendo UI网格中存储了一个应用程序日期排序。 在剑道网格中,列名是这样定义的 的传入值-月、日、年格式。1991年8月23日 字段名称为ReinsDepositDate: 在对日期进行排序时,其排序基于第一个值 1994年1/12 2015年1月23日 1992年1月13日 意思是当我提升的时候 1994年1/12 1992年1月

  • 我对剑道网格自定义编辑器有问题。当我点击剑道网格上的编辑按钮时,我想使用dateTimePicker作为我的编辑器。但当我尝试使用dateTimePicker自定义网格时,总会出现错误: 以下是简单的源代码: 或者你可以在这个链接上查看 我已经在许多不同的来源上检查了它,例如: 参考文献1 参考文献2

  • 问题内容: 我正在尝试显示时间戳记- 我尝试了不同的查询方式,并且还尝试将用作值。似乎没有任何作用。我的目的是让该应用显示以前的素数和它们被发现的时间。该应用程序的初衷是让用户能够关闭/杀死该应用程序,并在重新启动该应用程序时从上次找到的素数恢复计数。如果您有任何暗示,我也将不胜感激。 这是PrimeDBManager类 头等舱 最后是MainActivity类 问题答案: 好的,既然您上传了项目

  • 我使用的MVC剑道网格有4列,其中一列是DateTime字段。网格允许内联和批处理编辑。当我单击布尔字段时,它会显示一个复选框。如果我点击一个文本字段,它会显示一个文本字段。我猜对于日期字段,它应该显示一个日期选择器。相反,它显示一个文本字段。 以下是网格上的列声明: 这里是我的模型属性: 我错过了什么?我现在唯一的猜测是丢失了一个. js文件还是什么?请让我知道。谢谢!

  • 问题内容: 我正在学习Go,并且正在尝试对日期时间进行JSON解组。 我有一个用C语言编写的程序生成的JSON,我正在输出我认为有效的ISO8601 / RFC3339时区偏移量。我正在使用以下格式字符串: (请注意,本机不支持,我有一个包装器将其替换为纳秒级)。 然后,将产生以下结果: 但是在Go中取消编组此功能将无效:https : //play.golang.org/p/vzOXbzAwdW

  • 我正在使用Java-Eclipse和oracle SGBD public DefaultTableModel getJoueurData(){