【问题标题】:how to add seconds to current time in c?如何在c中将秒数添加到当前时间?
【发布时间】:2013-01-27 04:10:36
【问题描述】:

我正在用 c 编写代码,我需要在当前时间上加上毫秒:

current_time = time(NULL);
loc_time=localtime(&current_time);

假设当地时间是 20:00:00:10。我想添加 10 秒并显示它,以便显示 20:00:00:20。我对c相当陌生,因此非常感谢任何帮助。 我很困惑,因为时间是 int 格式,并且要添加毫秒,我必须将 0.001 秒添加到当前不是 int 的秒。

【问题讨论】:

    标签: c time


    【解决方案1】:

    time_t 只是一个以秒为单位的整数,因此您只需将其加 10:

    time_wanted = time(NULL) + 10;
    loc_time=localtime(&time_wanted);
    

    【讨论】:

    • 在大多数情况下你是对的,但它是由实现定义的。它是浮点或整数类型。但这也与 time_t 类型的内部位表示无关,请参阅:stackoverflow.com/a/25198359/8051589 和此处:stackoverflow.com/a/13855956/8051589
    • @AndreKampling:虽然规范允许它是浮点类型,但我不知道它在哪里的任何系统。但这实际上并不重要——无论哪种方式,您都可以对其进行算术运算。
    【解决方案2】:

    由于time() “将时间返回为自纪元 1970-01-01 00:00:00 +0000 (UTC) 以来的秒数。”只是将10 添加到它的返回值中:

    time_t timeNow;
    struct tm* time_info;
    time(&timeNow);
    time_info = localtime(&timeNow);
    char timeStr[sizeof"HH:MM:SS"];
    strftime(timeStr, sizeof(timeStr), "%H:%M:%S", time_info);
    printf("Time now: %s\n", timeStr);
    
    // add 10 seconds:
    timeNow += 10;
    time_info = localtime(&timeNow);
    strftime(timeStr, sizeof(timeStr), "%H:%M:%S", time_info);
    printf("New time: %s\n", timeStr);
    

    full example

    【讨论】:

      【解决方案3】:

      time 以秒为单位返回时间,因此您可以简单地添加 in

      time_t soon = current_time + 10;
      

      【讨论】:

      • 对不起,我发错了问题,我需要添加毫秒。
      • 您使用的是什么平台,是 Windows 还是某些 UNIX。 time 不会告诉你毫秒数。
      猜你喜欢
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      相关资源
      最近更新 更多