如何在CMake中将UNIX时间戳转换为ISO

问题描述 投票:1回答:1

我有一个看起来像1587405820 -0600的UNIX风格的时间戳,我想将其转换为ISO风格的格式,例如YYYY-MM-DDTHH:MM:SSZ

CMake在string(TIMESTAMP ...)处有一个https://cmake.org/cmake/help/v3.12/command/string.html#timestamp命令,但这只能让我在格式字符串中的current时间对我的应用程序不起作用。我需要能够将现有时间转换为ISO格式。

有没有办法做到这一点?

cmake unix-timestamp
1个回答
1
投票

如果您希望此功能使用当前时间以外的特定时间other],则可以将环境变量set SOURCE_DATE_EPOCH设置为UNIX样式的时间戳(整数):

# Set the environment variable to a specific timestamp.
set(ENV{SOURCE_DATE_EPOCH} 1587405820)
# Convert to ISO format, and print it.
string(TIMESTAMP MY_TIME)
message(STATUS ${MY_TIME})

打印(适用于UTC -0600):

2020-04-20T12:03:40

如果需要将此时间调整为UTC时间,则可以添加UTC参数:

set(ENV{SOURCE_DATE_EPOCH} 1587405820)
string(TIMESTAMP MY_TIME UTC)
message(STATUS ${MY_TIME})

打印:

2020-04-20T18:03:40Z

注意:如果此SOURCE_DATE_EPOCH变量在CMake代码的其他地方使用,则最好在修改之前保存SOURCE_DATE_EPOCH值,因此完成后可以将其设置回其先前的值。

© www.soinside.com 2019 - 2024. All rights reserved.