【问题标题】:Get start of day timestamp c++获取日期时间戳c ++的开始
【发布时间】:2019-04-25 19:40:50
【问题描述】:

我需要在 C++ 中获取时间戳。我在chrono 中找到了一些函数,例如:

 std::chrono::system_clock::now()

但它正在返回当前时间。如何获取一天的时间戳?我的意思是代表今天 00:00:00 和昨天相同的时间?我对 C++ 很陌生..

【问题讨论】:

标签: c++ time timestamp chrono


【解决方案1】:

我想,你只需要日期,没有时间。所以,你可以这样得到它:

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

using namespace std;

int main()
{
    auto curr = std::chrono::system_clock::now();
    auto tm = std::chrono::system_clock::to_time_t(curr);
    cout << std::put_time(std::localtime(&tm), "%d.%m.%Y");
}

当然,如果需要,您可以强制重置时间字段:

    auto curr = std::chrono::system_clock::now();
    time_t tm = std::chrono::system_clock::to_time_t(curr);
    auto lt = std::localtime(&tm);
    lt->tm_hour = 0;
    lt->tm_min = 0;
    lt->tm_sec = 0;   
    cout << lt->tm_mday << "." << lt->tm_mon + 1 << "." << lt->tm_year + 1900 << endl;

【讨论】:

  • 谢谢!你知道如何获取昨天的当地时间吗?
  • tm = tm - (24*60*60); auto lt = std::localtime(&tm);
  • 酷!最后一个问题,如何将其转换为unix时间戳?
  • tm 就是这样。它将时间戳存储为自 1970 年以来的秒数
  • tm 是一个结构体,不是时间戳
猜你喜欢
  • 2020-02-22
  • 2020-11-19
  • 2011-02-20
  • 2022-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
相关资源
最近更新 更多