【问题标题】:a time function in C linuxC linux中的时间函数
【发布时间】:2011-07-11 05:36:52
【问题描述】:

您好,我想知道是否可以编辑时间函数。让我的程序给用户一个重试时间?

struct tm * abc()
{
char *time_string;
time_t curtime;
struct tm *loctime;

/* Get the current time.  */
curtime = time (NULL);

/* Convert it to local time representation.  */
loctime = localtime (&curtime);
return loctime;
}

这将返回当前时间,但我想做的是编辑它以添加一个值。我这样做的原因是,我可以告诉用户在某个时间使用电流再试一次,并增加 2 分钟。不确定这是否是正确的方法? 谢谢

【问题讨论】:

    标签: c linux function time


    【解决方案1】:

    在返回之前添加以下行。

      localtime->tm_min += 2;
      mktime(localtime);
    

    第一行增加了本地时间两分钟。 第二行将本地时间重新规范化为“标准”格式,换句话说,您会将添加的分钟数从 (61) 等值滚动到 (hours+1),(minutes = 1) 等值。

    【讨论】:

    • 感谢您的帮助,我在发布后找到了一些信息,所以我现在的做法与发布的方法非常相似。谢谢
    • @Edwin:大概你的意思是第一行的+=
    • @Tomalak 和@user641902,是的,我有一个错字。它应该是tm_min += 2 而不是tm_min + 2。感谢您的观察,已在帖子中更正
    • 仍然看起来像一个 OTT 解决方案,重新计算整个时间,您可以在首先生成时间之前增加 UNIX 时间戳。它在更一般的情况下可能有用,但不适用于增加两分钟。
    • @Tomalak,今天两分钟,明天一周。哪一个更容易维护?到 2038 年,您会庆幸自己不再仅仅依靠长期。
    【解决方案2】:

    time() 以秒为单位返回时间戳(自the epoch 以来的秒数),因此您只需添加所需的延迟即可。

    curtime = time (NULL) + 2*60; // Adds two minutes, 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 2014-04-28
      • 2015-11-25
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      相关资源
      最近更新 更多