Math UTC时区的午夜,带有unix时间戳

Math UTC时区的午夜,带有unix时间戳,math,unix-timestamp,Math,Unix Timestamp,我正在寻找日期的数字表示形式,而午夜的unix时间(UTC)似乎是合理的选择。然而,由于我不确定自己的数学技能,我也不确定自己的数学技能 date = date - date % (24 * 60 * 60); 其中date是unix时间戳,该方法是什么?有没有更简单的方法?只使用strotime而不使用时间部分。所需的语言/库 我将假设C与标准UNIX库一起使用 非常合适 #include <time.h> struct tm date_tm; time_t date; lo

我正在寻找日期的数字表示形式,而午夜的unix时间(UTC)似乎是合理的选择。然而,由于我不确定自己的数学技能,我也不确定自己的数学技能

date = date - date % (24 * 60 * 60);

其中
date
是unix时间戳,该方法是什么?有没有更简单的方法?

只使用strotime而不使用时间部分。

所需的语言/库

我将假设C与标准UNIX库一起使用

非常合适

#include <time.h>

struct tm date_tm;
time_t date;

localtime_r(NULL, &date_tm);
date_tm.tm_sec = 0;
date_tm.tm_min = 0;
date_tm.tm_hour = 0;

date = mktime(&date_tm);


嗯,一开始我没注意到你想要UTC。由于一个UNIX日保证在UNIX时间内始终为86400 UNIX秒,因此我认为您的原始解决方案没有任何问题。

是的,您的公式是一种非常好的方法。完成同样事情的另一种方法是:

date = (date / 86400) * 86400;

值得注意的是,上述公式假设整数(截断)除法。另外,我觉得
86400
是一个非常常用的常量,它可以出现在源代码中而无需附加注释。

这是假设您使用的是PHP。您还可以使用
strotime('midnight')
date = (date / 86400) * 86400;