qt - Qt 到 QML 的转换:QDateTime -> 日期
问题描述
所以我向 QML 发送一个 QDateTime 以显示它并进行一些检查(理想情况下,我希望能够使用所有 javascript 日期函数,如 getTime()、getMonth()...),我意识到如果我发送:
QDateTime(2019-10-30 11:15:00.000 CET Qt::TimeZone Europe/Amsterdam )
然后我阅读了 QML 上的日期,我得到了当地时区的时间,而不是 QDateTime 上的时间......
2019 年 10 月 30 日星期三 06:15:00 GMT-0400(纽约时区)
有什么办法可以将时区保留在 QML 端?谢谢!!
解决方案
按照@Pedro的建议(我不知道如何正确标记您...),我使用了 moment.js和moment-timezone.js,因此我可以将任何日期引用到我想要的时区。对于任何有兴趣的人,我就是这样做的:
import QtQuick 2.9
import "./moment.js" as Moment
import "./moment-timezone-with-data.js" as MomentTimezone
Item {
anchors.fill: parent
property date customDate: new Date(); // local timezone is "America/New_York"
function getDateWithTimeZone(date, timeZone) {
var momentDate = moment(new Date(date));
var momentDateTz = momentDate.tz(timeZone);
return momentDateTz;
}
Text {
anchors.centerIn: parent
text: customDate.toLocaleString() + "\n"
+ getDateWithTimeZone(customDate, "Europe/Paris").toString()
}
}
给出以下输出:
推荐阅读
- linux - linux下终端编译代码的问题
- nginx - 为什么 NGINX authverify 的分段文件上传请求会收到立即关闭的连接?
- swift - 运行 xcode 项目时发生意外的变化
- c++ - 如何在离线时检测当前的 Windows 更新状态?
- c# - 如何在 C# 中使用我的代码进行单元测试
- html - CSS Thumbnail no subtitle - 只有在显示放大的缩略图时才有字幕
- c# - ASP.NET Core - 更新缓存列表的 1 个元素
在 IMemoryCache 中使用 EF Core - ios - 将图像大小压缩到 1.5 MB,同时发送到多部分 ios swift
- excel-formula - EXCEL - 如何计算单元格中的位数
- android - PreferenceFragmentCompat 为首选项添加边距