Rob*_*ble 6 c time timezone datetime
GNU date命令的信息页面包含以下示例:
例如,使用GNU
date命令,您可以回答"当巴黎时钟显示在2004年10月31日上午6:30时纽约几点钟的时间?" 使用以"TZ ="Europe/Paris"'开头的日期,如以下shell脚本中所示:Run Code Online (Sandbox Code Playgroud)$ export TZ="America/New_York" $ date --date='TZ="Europe/Paris" 2004-10-31 06:30' Sun Oct 31 01:30:00 EDT 2004在这个例子中,' - date'操作数以它自己的'TZ'设置开始,因此该操作数的其余部分根据'Europe/Paris'规则处理,将字符串
2004-10-31 06:30视为在巴黎.但是,由于date命令的输出是根据整个时区规则处理的,因此它使用纽约时间.(巴黎在2004年通常比纽约早6个小时,但这个例子是指一个短暂的万圣节时期,当时差距为5小时.)
我试图在C语言中以编程方式完成基本相同的事情而不需要date数百万次调用程序.基本上我正在寻找一种方法,在一个时区中采取任意日期和时间,并将其转换为另一个时区中的等效日期和时间,可以直接转换为UTC转换.我不关心输入和输出时间的格式,只要我可以使用标准函数(strftime/ strptime/ mktime/ etc)来操作它们.
该date程序似乎使用coreutils包内部的复杂例程来实现这一点,我正在寻找一种方法,使用标准POSIX/Linux例程或外部库在C中执行此操作.我看了很多看起来很有希望的zoneinfo,但我找不到任何有用的库.