在 C++ 中将秒转换为 UNIX 时间戳

发布于 2024-12-25 12:27:31 字数 949 浏览 0 评论 0原文

这是我的代码,应该在传递时间戳后显示两个完整日期:

#include <iostream>
#include <fstream>
#include <time.h>
#include <string>

using namespace std;

int main (int argc, char* argv[])
{

    time_t startTime_t = (time_t) argv[1];
    time_t endTime_t = (time_t) argv[2];

    cout << argv[1] << endl << argv[2] << endl;
    cout << startTime_t << endl << endTime_t << endl;

    string startTime = asctime(localtime(&startTime_t));
    string endTime = asctime(localtime(&endTime_t));

    cout << startTime << endl << endTime << endl;

    return 0;
}

我在从秒到 time_t 的转换上做了一些错误,正如您可以通过此输出看到的:

$ ./a 1325783860 1325791065
1325783860
1325791065
1629762852
1629763900
Mon Aug 23 19:54:12 2021

Mon Aug 23 20:11:40 2021

供参考:

$ date -d @1325783860
Thu Jan  5 12:17:40 EST 2012

Here is my code that should display two full dates after being passed timestamps:

#include <iostream>
#include <fstream>
#include <time.h>
#include <string>

using namespace std;

int main (int argc, char* argv[])
{

    time_t startTime_t = (time_t) argv[1];
    time_t endTime_t = (time_t) argv[2];

    cout << argv[1] << endl << argv[2] << endl;
    cout << startTime_t << endl << endTime_t << endl;

    string startTime = asctime(localtime(&startTime_t));
    string endTime = asctime(localtime(&endTime_t));

    cout << startTime << endl << endTime << endl;

    return 0;
}

I'm doing something wrong with the conversion from seconds to time_t, as you can see by this output:

$ ./a 1325783860 1325791065
1325783860
1325791065
1629762852
1629763900
Mon Aug 23 19:54:12 2021

Mon Aug 23 20:11:40 2021

For reference:

$ date -d @1325783860
Thu Jan  5 12:17:40 EST 2012

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千年*琉璃梦 2025-01-01 12:27:31

您不能只将字符串指针转换为 time_t。使用 atol() 从字符串中获取 long,然后将其转换为 time_t。

您返回的值是解释为时间的指针算术值,或者本质上是随机的。

You can't just cast a string pointer to a time_t. Use atol() to get a long from your string, and then cast that to a time_t.

The values you are getting back are the pointer arithmetic value interpreted as a time, or essentially random.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文