我有一个看起来像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格式。
有没有办法做到这一点?
如果您希望此功能使用当前时间以外的特定时间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
值,因此完成后可以将其设置回其先前的值。