相关疑难解决方法(0)

GCC中的std :: put_time实施状态?

我试图使用GCC(测试版本4.5.1,4.6.3,4.8.4)编译此示例程序:

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

using std::chrono::system_clock;

int main()
{
    system_clock::time_point now = system_clock::now();
    std::time_t now_c = system_clock::to_time_t(
                            now - std::chrono::hours(24));
    std::cout << "One day ago, the time was "
              << std::put_time(std::localtime(&now_c), "%F %T") << '\n';
}
Run Code Online (Sandbox Code Playgroud)

但它告诉我:

prog.cpp: In function 'int main()':
prog.cpp:14:18: error: 'put_time' is not a member of 'std'
Run Code Online (Sandbox Code Playgroud)

我想,可能还没有实现.所以我试着检查这个功能的实现状态.我只找到了这个页面:

但我找不到任何笔记put_timechrono或相似.任何人都可以指向我提供有关此库的实现状态的信息的资源吗?

c++ gcc std c++11 c++-chrono

63
推荐指数
2
解决办法
2万
查看次数

C++ 使用 std::get_time 解析 YYMMDD ISO 8601 日期字符串给出了意外结果?

我正在尝试解析格式为 的日期YYMMDD。作为测试,我尝试了以下代码:

#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>

int main(){
    std::tm t = {};
    std::istringstream ss("191203");
    ss >> std::get_time(&t, "%y%m%d");
    if (ss.fail()){ 
        std::cout << "Parse failed\n";
    } else {
        std::cout << std::put_time(&t, "%c") << '\n';
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 Coliru、GCC 6.1 (C++17) 进行测试,输出为:

Sun Mar  0 00:00:00 1912
Run Code Online (Sandbox Code Playgroud)

我所期望的是:

Mon Dec 3 00:00:00 2019
Run Code Online (Sandbox Code Playgroud)

格式字符串有问题吗?

c++ date-parsing

5
推荐指数
1
解决办法
2820
查看次数

C++:将 20160120 形式的日期转换为自纪元以来的天数

假设我们有一个表示日期的整数,格式为 20160120。我想将其转换为自纪元 (1970-01-01) 以来的天数,以便它对应于 POSIX 样式的日期。例如,int 20160718 将变为 int 17000。

\n\n

我的尝试如下,我首先将 int 转换为字符串,然后转换为纪元以来的秒数,然后转换为纪元以来的天数。这样做的一个问题是我必须将日期移动 3 小时才能获得正确的日期(请参阅std::to_string(d*100 + 3))行。我怀疑这与时区有关?我在 UTC - 1。我不知道如何处理这个问题。

\n\n

所以我想知道是否有一种不太复杂的方法来做到这一点,如果没有\xe2\x80\x93 我如何解决时区问题。

\n\n
#include <iostream>\n#include <chrono>\n#include <time.h>\n#include <iomanip>\n#include <sstream>\n#include <string>\n\ntypedef std::chrono::duration<int, std::ratio<60 * 60 * 24>> days_type;\ntypedef std::chrono::system_clock sysclock;\n\nint convert(const unsigned d){\n    std::tm t = {};\n    std::istringstream ss(std::to_string(d*100 + 3));   \n    ss >> std::get_time(&t, "%Y%m%d%H");\n\n    time_t t_ =  mktime(&t);\n\n    /*\n     Now convert seconds since epoch to days since epoch via chrono...\n     */\n\n    sysclock::time_point tp = sysclock::from_time_t(t_);\n\n …
Run Code Online (Sandbox Code Playgroud)

c++ date c++-chrono

0
推荐指数
1
解决办法
1605
查看次数

标签 统计

c++ ×3

c++-chrono ×2

c++11 ×1

date ×1

date-parsing ×1

gcc ×1

std ×1