【问题标题】:"round" time_t to day/hour?“round” time_t 到天/小时?
【发布时间】:2013-02-02 01:41:31
【问题描述】:

我有一个 unix time_t ,有什么简单的方法可以将它转换为 time_t 吗:

  1. 表示 time_t 当天的午夜?
  2. 表示 time_t 小时的开始?

【问题讨论】:

  • 一天中的午夜是什么意思?(它的总是在 00:00),以及整点的开始是什么意思?(它的总是 xx 在 xx:00)
  • @Ankinet Afaik,是的,午夜是 00:00,我从未见过不是 xx:00 的小时开始。
  • @uesr949760 那么问题是什么?你想做什么?
  • @Aniket 正如问题所述。让我们举一个具体的例子,我有一个值为 1359769961 的 time_t 。那是2013-02-02 02:51:41。如何(数学上)将其转换为例如1359766800 (2013-02-02 02:00:00) 和 1359759600 (2013-02-02 00:00:00)

标签: c time


【解决方案1】:

类似这样的:

time_t t = time(NULL);

t -= (t % 86400); 

常数 86400 = 24 * 60 * 60 - 我认为这是一个需要记住的有用数字... ;)

【讨论】:

    【解决方案2】:

    让计算机为你记住天体常数:

    time_t      arg, start_of_hour, start_of_day;
    struct tm   *temp;
    
    temp = localtime(&arg);
    temp->tm_sec  = 0;
    temp->tm_min  = 0;
    start_of_hour = mktime(temp);
    temp->tm_hour = 0;
    start_of_day  = mktime(temp);
    

    如果您愿意,也可以使用gmtime

    【讨论】:

    • 不幸的是,gmtime 没有可移植的逆。
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多