【问题标题】:How to change the format of date and time with time_t?如何使用 time_t 更改日期和时间的格式?
【发布时间】:2018-02-22 23:23:49
【问题描述】:
time_t now = time(0);  
std::string h = std::string (ctime (&now));

std::cout << "\nh: " << h;

我收到的当前输出是:Thu Sep 14 10:58:26 2017

我希望输出为2017-08-26-16-10-56

我可以对该输出做些什么?

【问题讨论】:

标签: c++ date time formatting time-t


【解决方案1】:

使用strftime,像这样:

strftime (buffer, 80,"%Y-%m-%d-%H-%M-%S",timeinfo);

完整代码:

#include <cstdio>
#include <ctime>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;
  char buffer [80];

  time (&rawtime);
  timeinfo = localtime (&rawtime);

  strftime (buffer, 80,"%Y-%m-%d-%H-%M-%S",timeinfo);
  puts (buffer);

  return 0;
}

输出:

2017-09-14-14-41-19

【讨论】:

    【解决方案2】:

    使用std::put_time

    #include <iomanip>
    
    time_t now = time(0);
    std::string h = std::put_time(localtime(&now), "%F-%H-%M-%S");
    std::cout << "\nh: " << h;
    

    输出

    时间:2017-09-14-05-54-02

    更好的是,使用std::chrono

    #include <iostream>
    #include <iomanip>
    #include <chrono>
    using namespace std;
    
    int main() {
        auto now = chrono::system_clock::to_time_t(chrono::system_clock::now());
        cout << put_time(localtime(&now), "%F-%H-%M-%S") << endl;
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 2016-10-20
      相关资源
      最近更新 更多