telerik - 使用 Telerik 控件将数据库 UTC 时间戳呈现为本地
问题描述
我们正在使用 Telerik (PHP UI) 控件,但似乎有些东西我无法破解。
我们将时间戳存储在 UTC 的后端数据库中,当使用 Grid 显示此类项目时,我希望能够显示 UTC 时间戳转换为本地用户时区(TZ 数据存储为 PHP 变量,不同的人登录in 可能在不同的 TZ 中)。看来我不是唯一一个在问这个问题的人,因为 Telerik 论坛上有人问了同样的问题但没有答案(滚动到该论坛帖子的底部)。
从 Telerik网站看来,我所要做的就是使用在日期后附加“zzz”的格式来格式化日期,但这所做的只是将偏移量添加到显示的时间(例如2020-02-27 10:00:00
-> 2020-02-27 10:00:00-0800
)。 ..但它确实做到了“自动神奇”,我认为这很好......(严重讽刺)
此论坛帖子还显示 onRequestEnd 调用应该做我需要它做的事情,但是当我尝试这样做时,似乎没有任何改变。
任何人都可以提供任何建议吗?
解决方案
注意:我使用以下内容创建了外部表:
$grid = new \Kendo\UI\Grid('grid');
解决方案:我通过在页面中添加以下内容来实现这一点:
function dataSource_requestEnd(e){
var data = e.sender.options.data.data;
for(var i=0; i<data.length; i++){
var td = data[i];
for (var key in td){
if (key === "NameOfDateField"){
var offset = new Date().getTimezoneOffset();
new Date(td[key].setMinutes(td[key].getMinutes() - offset));
}
}
}
}
$(document).ready(function() {
var dataSource = $("#grid").data("kendoGrid").dataSource;
dataSource.bind("requestEnd", dataSource_requestEnd);
dataSource.fetch();
});
请注意,NameOfDateField是从数据源返回的数组中键的名称。
TBH,我完全不确定数据是如何转换的,但肯定offset和localTime变量对于成功至关重要(尽管在我看来,它们实际上并没有更新任何东西?!)
推荐阅读
- javascript - 处理按钮在输入内的点击
- php - 在 PHP 中安全地上传视频
- c - 如何正确使用 nanosleep() 以特定频率运行代码?
- java - 如何以 byte[] 的形式将 Base64 解码图像发送到 Java 中的 HttpPost
- java - 猜测 Sting 单词 java 中的符号
- java - 有人可以告诉我为什么 ListView 没有显示吗?
- python - 带有进程池和自定义管理器的 Python 多处理事件
- groovy - 如何在 jmeter 发布请求中发送 id 数组(存储在 csv 中)
- python - 我可以在带有硒的a标签下用python获取b标签中的数据吗?
- python - Python计算文件中同一行上的多个匹配字符串