You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++获取PST(洛杉矶)时区的时间?

获取洛杉矶(PST/PDT)时间的解决方案

std::localtime() 会直接依赖程序运行环境的系统时区,所以在印度服务器上只能返回印度本地时间。无法直接调整std::localtime()本身,但可以通过以下两种可靠方式获取洛杉矶时区的时间:

方案一:C++11及以上标准库(推荐)

从C++11开始,标准库的<chrono>模块提供了原生时区处理能力,推荐使用IANA时区标识符(如"America/Los_Angeles"),它会自动处理夏令时(PST与PDT的切换),比硬编码UTC偏移更稳定。

C++20及以上版本(用<format>简化输出)

#include <chrono>
#include <format>
#include <iostream>

int main() {
    // 获取当前系统时间点
    auto now = std::chrono::system_clock::now();
    // 绑定到洛杉矶时区
    std::chrono::zoned_time la_time{std::chrono::locate_zone("America/Los_Angeles"), now};
    
    // 格式化输出小时和分钟
    std::cout << "Time in California is " 
              << std::format("{:%H:%M}", la_time) 
              << std::endl;
    return 0;
}

C11/C17版本(兼容旧标准)

如果编译器不支持C++20的<format>,可以将时间点转换为std::tm结构后输出:

#include <chrono>
#include <ctime>
#include <iostream>

int main() {
    auto now = std::chrono::system_clock::now();
    // 获取洛杉矶时区的转换规则
    const auto& la_tz = std::chrono::locate_zone("America/Los_Angeles");
    auto local_time = la_tz->to_local(now);
    
    // 转换为tm结构
    std::tm tm{};
    std::chrono::system_clock::to_time_t(local_time, &tm);
    
    std::cout << "Time in California is " 
              << tm.tm_hour << ":" << tm.tm_min 
              << std::endl;
    return 0;
}

方案二:修改环境变量(兼容C++03及更早版本)

如果必须使用旧标准的std::localtime(),可以通过设置TZ环境变量指定时区,再调用tzset()刷新配置。注意这种方式是全局生效的,可能影响程序中其他依赖时区的逻辑:

#include <ctime>
#include <iostream>
#include <cstdlib>

int main() {
    // 设置时区为洛杉矶
    setenv("TZ", "America/Los_Angeles", 1);
    // 刷新时区配置
    tzset();
    
    time_t secSinceEpoch = time(0);
    tm* timeStruct = std::localtime(&secSinceEpoch);
    int hour = timeStruct->tm_hour;
    int min = timeStruct->tm_min;

    std::cout << "Time in California is " << hour << ":" << min << std::endl;

    return 0;
}

关键注意事项

  • 不要直接硬编码UTC偏移(如PST为UTC-8、PDT为UTC-7),夏令时的切换规则可能随政策调整,使用IANA时区标识符更可靠。
  • 部分在线编译器需要手动开启C++11及以上编译选项(如-std=c++11或-std=c++20)才能支持<chrono>的时区功能。

内容的提问来源于stack exchange,提问作者Samuel van der Veen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:25:21