gpt4 book ai didi

C++:在保持精度的时区之间转换日期时间

转载 作者:行者123 更新时间:2023-11-30 04:06:04 25 4
gpt4 key购买 nike

考虑输入:2014-04-14T16:28:07.023(无时区,毫秒精度)我对其进行了解析,并将各个部分作为数字。

  • 输入始终被认为是 UTC
  • 我想显示为本地时间
  • 我想在显示时保持毫秒精度

我有 C++98 和 boost 1.51。

我检查了 high_resolution_clocksystem_clock,但还无法生成问题的最终图。

最佳答案

按照评论中的要求作为答案发布,这里是如何在没有 Boost 的情况下完成的:

#include <iostream>
#include <stdlib.h>
#include <time.h>

int main() {
int year, month, day, hour, minute, second, millisecond;
if (std::cin >> year >> month >> day >> hour >> minute >> second >> millisecond) {
struct tm utc;
utc.tm_year = year;
utc.tm_mon = month;
utc.tm_mday = day;
utc.tm_hour = hour;
utc.tm_min = minute;
utc.tm_sec = second;
utc.tm_isdst = 0;

time_t time = timegm(&utc);
if (time == (time_t) -1)
abort();

struct tm *local = localtime(&time);
if (localtime == NULL)
abort();

year = local->tm_year;
month = local->tm_mon;
day = local->tm_mday;
hour = local->tm_hour;
minute = local->tm_min;
second = local->tm_sec;

std::cout << year << ' ' << month << ' ' << day << ' ' << hour << ' ' << minute << ' ' << second << ' ' << millisecond << std::endl;
}
}

请注意,millisecond 变量是从输入读取并写入输出的,没有任何修改。

这使用了非标准的 timegm 函数,但该函数的文档包含一个更便携的实现,如果需要,您可以将其包含在内。

关于C++:在保持精度的时区之间转换日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23044096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com