【问题标题】:C++ <ctime> printing wrong dateC++ <ctime> 打印错误的日期
【发布时间】:2016-09-05 17:58:59
【问题描述】:

我正在使用小型 pcb 微型计算机进行一个小型项目。我写了一些代码来获取日期和时间并打印它,但它打印了错误的日期。开始打印的日期:

2066 年 1 月 1 日 00:00:00

我正在使用的代码段如下,去掉了不相关的位。解决此问题的任何帮助都会有所帮助

 #include<ctime>



static char* DateTime()
{
   time_t now = time(0);  
   char* dateTime = ctime(&now);
    return dateTime;
};

我已经阅读了一些其他类似的问题,但我无法成功地得出解决方案,我觉得我使用微型计算机这一事实可能在我的问题中发挥了作用。我用的板子是STM32 Nucleo。

【问题讨论】:

  • C.C11标准草案n1570中必要的header是&lt;time.h&gt;7.27.2.4时间函数1 #include time_t time(time_t *timer); 3 [...] 如果日历时间不可用,则返回值 (time_t)(-1)。 [...]
  • #include 行在 C 中无效。您使用 C++,更改文本和标记。它们是不同的语言。 C 也不支持方法。请参阅How to Ask,甚至不清楚您的实际问题是什么。但是,在 MCU 上通常只存在一个独立的环境,因此标准库的全部或部分可能不可用。
  • 我的错,我知道我的意思是小错误,纠正它以正确指向正确的语言。
  • 在日期格式方面也与 做同样的事情。 2066 年 1 月
  • 你的函数仍然不是一个方法。在 C++ 中,区分变得更加相关,因为两者都是可能的。我的其余评论仍然有效。您确定该函数存在并产生任何有效结果吗?你检查了空指针吗?您的问题不完整。

标签: c++ datetime epoch


【解决方案1】:

通常嵌入式板有一个时钟,每次重置 cpu 时都会重置。除非您已明确设置日期,否则董事会无法获知实际时间。

计算机使用 NTP 协议自动更新时间,对于没有某种操作系统(例如 Raspberry)的微控制器来说,这是不正确的。

在像时钟这样的项目中,通常使用一个外部时钟 IC 来保持日期和时间,并使用一个小电池来 24/7 供电而不会丢失日期。

这是一个页面,提供有关该主题的更多信息以及如何在微控制器上处理时间https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit

【讨论】:

  • 谢谢,这很有用。你知道我怎么能让它从电脑上调用时间,因为它在运行时总是要插入电脑。这意味着它的时间与它的源时间无关,即计算机是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
相关资源
最近更新 更多