如何在c ++中从字符串中获取unixtimestamp

时间:2016-04-03 15:17:20

标签: c++

我几天已经开始讨论这个问题了,我搜索并尝试了我发现的所有内容,但没有任何作用。我想更改日期格式的字符串,如下所示:02.04.2016到unix时间戳(从1970年开始的秒数),没有任何内容给出我需要的结果。我已经准备好了这样的实际时间

time_t pom;
time(&pom);

或者我试过

time_t t = time(0);

但是当我将实际日期的日期(字符串格式)给我发现的应该能够将其转换为unixtimestamp的方法或至少接近它的方法时,它给出了比这种方法更绝对不同的结果实际的时间,我真的在这里疯狂..我也试着写自己的方法将日期转换为秒,如下所示:

 int Velkoslad::konvertujNaSekundy(std::string datum)
{
    int datumy[12] = { 31, 28, 31, 30, 31 , 30, 31 , 31, 30 , 31, 30 ,31 };
    std::string datumD = datum;
    long long dni = std::stoi(datumD.substr(0, 2));
    long long mesiace = std::stoi(datumD.substr(3, 2));
    long long rok = std::stoi(datumD.substr(6, 4));
    long long sekundaDni = dni * 86400;
    long long mesiaceSek = 0;

    if (mesiace == 2) {    //18748800,2419200,10368000
        if (rok % 4 == 0)
            mesiaceSek = (datumy[(mesiace - 1)] + 1) * 86400;
        else
            mesiaceSek = datumy[(mesiace - 1)] * 86400;
    }
    else
        mesiaceSek = datumy[(mesiace - 1)] * 86400;

    long long rokSek = 0;
    if (rok % 4 == 0)
        rokSek = ((rok - 1970) * 28857600) + 86400;
    else
        rokSek = (rok - 1970) * 28857600;

    long long datumVsec = 0;
    datumVsec += sekundaDni + mesiaceSek + rokSek;
    return datumVsec;
}

但是这也给我带来了不好的结果,或者说我从那个时间方法或者某些方面得到了不好的实际时间...... 我真的不知道,我真的试图找到一些东西......我会非常感谢每一个帮助......

0 个答案:

没有答案