gpt4 book ai didi

c++ - 在 RedHat 7.2 中获取构建日期和时间

转载 作者:行者123 更新时间:2023-11-30 03:37:49 26 4
gpt4 key购买 nike

我正在尝试将构建日期和时间添加到我的 Qt 5.6 项目文件中,到目前为止我已经添加了:

    win32 {
DEFINES += BUILDTIME=\\\"$$system('echo %time%')\\\"
DEFINES += BUILDDATE=\\\"$$system('echo %date%')\\\"
} else {
DEFINES += BUILDTIME=\\\"$$system(date '+%H:%M')\\\"
DEFINES += BUILDDATE=\\\"$$system(date '+%d/%m/%y')\\\"
}

在源代码中:

    QString strBuildDT = QString::fromLocal8Bit(BUILDDATE)
+ ", " + QString::fromLocal8Bit(BUILDTIME);

以此为例,我会得到:

    12/10/16, 17:39

我想重新格式化日期以显示:

    12 October 2016, 17:39

根据研究,正确的日期格式应该是:

    DEFINES += BUILDDATE=\\\"$$system(date '+%d %B %Y')\\\"

但是这不起作用并为 BUILDDATE 返回空字符串。

最佳答案

我找到了一个 mailing list thread about this .这行得通($$quote 的目的是防止 Qt 修改空格,它实际上应该仍然产生一个没有 $$quote 的非空字符串,真正的关键是外\"s)

DEFINES += \"BUILDDATE=\\\"$$quote($$system(date /T))\\\"\"

这适用于 Windows。我现在无法在 Linux 上进行测试,但应该是这样的:

DEFINES += \"BUILDDATE=\\\"$$quote($$system(date '+%d %B %Y'))\\\"\"

这实质上是在编译器命令行上将整个内容都用引号括起来,并让它与字符串中的空格一起使用。示例(Windows、mingw、Qt 4.8.1):

g++ ... -D"BUILDDATE=\"Wed 10/12/2016\"" ...

也就是说,您可能仍想只使用 date '+%s' 来获取纪元时间,然后使用 QDateTime 格式化显示以使用当前区域设置和时区.不幸的是,我不知道在 Windows 上获取纪元时间的命令(粗略研究 does not bode well )。

关于c++ - 在 RedHat 7.2 中获取构建日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003995/

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