Time 如何获取时间的UTC偏移量?

Time 如何获取时间的UTC偏移量?,time,c99,Time,C99,我们正在使用\uuuuuuuuuuuuuuuuuuuuuu将编译时间嵌入到二进制文件中。不幸的是,没有UTC偏移的时间是没有意义的。我看不到一个明显的方法来获取编译器运行的时区。我想我可以从配置脚本中获取这个。但是有更好的办法吗 如果我从配置脚本执行,我将需要以某种方式将其放入.h或.c文件中,如果文件不存在,则执行一些智能操作。您可以使用编译器标志将其传递到外部。大多数编译器都提供了'-D'标志来从外部定义#定义宏。假设您将UTC信息放入环境变量中。将该环境变量作为-D标志传递 set $my

我们正在使用
\uuuuuuuuuuuuuuuuuuuuuu
将编译时间嵌入到二进制文件中。不幸的是,没有UTC偏移的时间是没有意义的。我看不到一个明显的方法来获取编译器运行的时区。我想我可以从配置脚本中获取这个。但是有更好的办法吗


如果我从配置脚本执行,我将需要以某种方式将其放入.h或.c文件中,如果文件不存在,则执行一些智能操作。

您可以使用编译器标志将其传递到外部。大多数编译器都提供了
'-D'
标志来从外部定义
#定义
宏。假设您将UTC信息放入环境变量中。将该环境变量作为
-D
标志传递

set $myUTC="-7"
gcc -c mysource.cpp -DUTC=$myUTC
mysource.cpp
中,使用宏
UTC

printf("Compiled at %d Offset %d", __TIME__, UTC);

好的,所以configure脚本必须得到它运行时的偏移量,我们假设configure脚本和编译器在同一时区运行。我想这是可行的。现在唯一剩下的问题是
date
命令没有提供UTC偏移量,所以我需要用其他方法找到它。尽管如此,这看起来还是一个难题。你的脚本会在不同的时区运行吗?如果没有,您可以自己放置,而不是通过命令查找。更好的选择是使用带有UTC开关和所需格式的
date
命令的输出。