【问题标题】:How do I get the current time in a different time zone without setting TZ variable如何在不设置 TZ 变量的情况下获取不同时区的当前时间
【发布时间】:2018-01-29 09:12:23
【问题描述】:

如何在不设置 tz 变量的情况下获取不同时区的当前时间(因为我不想更改本地时区 (IST))。

例如:我需要不同的时区时间,例如 (PST, EST,....)。

【问题讨论】:

  • 您需要夏令时,还是需要静态区域?
  • 我也需要夏令时,但现在我只有一个输入作为时区,如(PST,EST)。那么如何计算不同时区的 DST。
  • 有复杂的问题需要解决,包括“你如何识别当前时区和另一个时区”,你如何知道在给定时间哪个时区偏移适用于每个时区, 等等。请注意,像 PST 和 EST 这样的缩写在世界范围内并不是唯一的,因此它们充其量是模棱两可的。如果正确的时区应该是 PDT 但您认为它是 PST,会发生什么?需要解决这些问题才能提出可靠的解决方案。
  • 另外,您在哪个平台上工作?有些系统比其他系统有更多的支持。

标签: c datetime timezone libc


【解决方案1】:

你能不能不使用linux的time.h之类的东西,然后为你的不同时区做后期处理?

void linux_time_get
(
    os_time_t* p_time_seconds,
    os_time_us_t* p_time_microseconds
)
{
    struct timeval tv;
    gettimeofday(&tv, NULL); /* Second arg is timezone */
    if (p_time_seconds)
    {
        *p_time_seconds = tv.tv_sec;
    }
    if (p_time_microseconds)
    {
        *p_time_microseconds = tv.tv_usec;
    }
}

然后这个函数的调用者根据你要使用的时区修改'p_time_seconds'和'p_time_microseconds'?

或者,您可以为“tz”创建一个局部变量,作为“gettimeofday()”函数的第二个参数解析。

【讨论】:

  • 谢谢兄弟...!!
  • 没问题 :) 如果这对您有所帮助并回答了您的问题,请投票并将其标记为答案!
  • 我们如何在不改变 TZ 变量的情况下为 DST(夏令时)计算相同的东西
  • 通过将固定值添加到 'p_time_seconds' 和 'p_time_microseconds' 变量来创建另一个函数以将时间转换为 DST。
  • 但第二个参数我必须通过 struct timezone { int tz_minuteswest; /* 格林威治以西分钟 / int tz_dsttime; / 夏令时校正类型 */ };但我没有这个信息
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2014-07-27
相关资源
最近更新 更多