Arduino UDPNTP Epoch,确定一天中的分钟

Posted

技术标签:

【中文标题】Arduino UDPNTP Epoch,确定一天中的分钟【英文标题】:Arduino UDPNTP Epoch, determine minute of the day 【发布时间】:2015-06-04 22:35:03 【问题描述】:

我在弄清楚这一点时遇到了一些麻烦。

每天有 1440 分钟。我希望使用 NTP 确定当天的当前分钟,所以 12:00 pm 将是 720,12:01 pm 将是 721 等

我正在使用 C 在 arduino 板上执行此操作,

const unsigned long seventyYears = 2208988800UL;     
unsigned long epoch = secsSince1900 - seventyYears;

我知道(epoch % 3600 ) / 60 给了我当前小时的当前分钟(尽管它不是 100% 清楚如何)。


更新

下面的答案是正确的,但我的结果没有意义:

Serial.print("Unix time = ");
const unsigned long seventyYears = 2208988800UL;     
unsigned long epoch = secsSince1900 - seventyYears;  
Serial.println(epoch);
Serial.println((epoch % (3600 * 24))/ 60);    

[Output:]
Unix time = 1427815654
144

但是当我计算(1427815654 % (3600 * 24)) / 60 时,我得到927,这正是我所期望的。我的董事会到底是怎么得到144 的?

【问题讨论】:

虽然不是 100% 清楚这是什么意思?你不明白还是你指的是闰秒? 我的建议:对于任何此类微积分,请通过 struct tmlocaltimegmtime。从 1970 年到今天,存在时间上的不规则,这两个函数可以为您节省大量调试。 【参考方案1】:

如果(epoch % 3600 ) / 60 对您来说足够精确,您可以简单地使用:

(epoch % (3600 * 24)) / 60 

(但是忽略了闰秒)


解释

% 给出除法的其余部分。

因此,我们将自纪元以来的所有秒数除以一天中的秒数 (3600 * 24)。我们现在得到了一天中的第二个,所以除以 60 就是分钟。

【讨论】:

这绝对是正确的方法,但我得到的结果不正确。我相信我的原始时代可能有问题,因为我收到的值小于 100 我不确定为什么,但您的方法至少不适用于 arduino UdpNtp 客户端。您的方法给出的值刚刚超过一百...( (((epoch % 86400L) / 3600) * 60) + (epoch % 3600) / 60 ) 这为我提供了我想要的,只需花费几小时和几分钟,然后计算出之间的分钟数

以上是关于Arduino UDPNTP Epoch,确定一天中的分钟的主要内容,如果未能解决你的问题,请参考以下文章

Solana 按 Epoch 确定通货膨胀奖励分配的日期和时间

Tensorflow CIFAR10 教程:确定训练过程中的 epoch 数

Arduino中的AlarmRepeat函数

在 Sqlite (Dbeaver) 中转换 Epoch 时间并解析出时间

在keras中,如何控制一个epoch绘制的mini-batches数量

epoch 内的平均误差和误差标准差未正确更新 - PyTorch