gpt4 book ai didi

kendo-ui - Kendo Grid DateTime 列显示不正确的日期

转载 作者:行者123 更新时间:2023-12-05 03:08:55 28 4
gpt4 key购买 nike

我有一个 Kendo Grid,它有一个日期时间列,在从数据库中获取日期时我们得到了正确的日期,但在显示期间日期发生了变化。例如:DB 日期是 07/06/2017,但在网站上显示时,它会更改为 06/06/2017,考虑到 MM/DD/YYYY。谁能帮我解决这个问题。我们的数据库和网站都位于纽约地区。

最佳答案

Kendo UI 数据源使用 JavaScript Date 对象作为日期。这些对象始终处于客户端的时区,这可能会导致日期发生变化。一个可能的选择是使用 UTC 日期:

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


编辑,把链接的内容复制到这里就行了,因为SO不喜欢链接是唯一的答案

使用带有显式设置 DateTime 类型为 UTC 的 setter 和 getter 的 ViewModel。

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

使用DataSourcerequestEnd事件拦截传入的Date字段,并用时差替换。

@(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>

关于kendo-ui - Kendo Grid DateTime 列显示不正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443603/

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