C++将NTP服务器返回的时间转换为字符串 我是C++中的新手,想把NEP值从NTP服务器转换成一个人类可读的日期时间值。 void printTime() { /* Human time (GMT): Friday, May 17, 2019 8:44:16 AM Human time (your time zone): Friday, May 17, 2019 10:44:16 AM GMT+02:00 */ unsigned long e = 1558082656; time_t epoch = e; struct tm *timeinfo_e; char buf[80]; time(&epoch); timeinfo_e = gmtime(&epoch); std::cout << "epoch: " << asctime(timeinfo_e) << std::endl; strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", timeinfo_e); printf("%s\n", buf); }

C++将NTP服务器返回的时间转换为字符串 我是C++中的新手,想把NEP值从NTP服务器转换成一个人类可读的日期时间值。 void printTime() { /* Human time (GMT): Friday, May 17, 2019 8:44:16 AM Human time (your time zone): Friday, May 17, 2019 10:44:16 AM GMT+02:00 */ unsigned long e = 1558082656; time_t epoch = e; struct tm *timeinfo_e; char buf[80]; time(&epoch); timeinfo_e = gmtime(&epoch); std::cout << "epoch: " << asctime(timeinfo_e) << std::endl; strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", timeinfo_e); printf("%s\n", buf); },c++,C++,但它显示的是当前时间,而不是那个时代价值的时间。 有什么问题 谢谢 time(&epoch); 这会将当前时间存储到历元中,覆盖先前指定的值。如果将其取出,程序将显示分配给epoch的UNIX时间 不过,C++附带了自己的DATEIME库,它被安排在,它应该能够完全避免C API。到今天为止,您已经可以看到我所说的对代码理解的改进: #include <chrono> #include <ctime> #include <iomanip> #incl

但它显示的是当前时间,而不是那个时代价值的时间。 有什么问题

谢谢

time(&epoch);
这会将当前时间存储到历元中,覆盖先前指定的值。如果将其取出,程序将显示分配给epoch的UNIX时间

不过,C++附带了自己的DATEIME库,它被安排在,它应该能够完全避免C API。到今天为止,您已经可以看到我所说的对代码理解的改进:

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

namespace chr = std::chrono;

void printTime() {
  using Clock = chr::system_clock;
  unsigned long e = 1558082656;

  chr::time_point<Clock> time(chr::seconds{e});
  auto c_time = Clock::to_time_t(time); // Gone if using C++20's to_stream function
  std::cout << std::put_time(std::gmtime(&c_time), "%c %Z"); // localtime for the user's timezone
}

如果您觉得当前往返于时间点有点迂回,尽管从时钟的历元开始明确指示秒数,那么它仍然是打印C时间的更方便的方式。

按历元值,您是指NTP服务器返回的时间吗?在软件中,epoch一词的绝大多数用法都是指1970年初,所以你的问题让人有点困惑。编辑标题