【问题标题】:c mktime returns wrong values for wday and yday [duplicate]c mktime 为 wday 和 yday 返回错误的值 [重复]
【发布时间】:2015-01-16 10:31:04
【问题描述】:

我一直在尝试使用 mktime 来获取我使用的日期是一周中的哪一天。但它不断为 wday 和 yday 返回错误的值。我不在乎yday,但我不确定是什么问题。我多次查看代码,在互联网上搜索等...,我终于想不出我可能做错了什么。

这是调用 mktime 后的代码和值的图片。如果有人能帮我一把,我将不胜感激。

谢谢

【问题讨论】:

  • tm_mon : 0..11,你需要-1
  • 请不要将代码作为图片发布,如果您只是将相关行复制粘贴到问题中,这将占用更少的空间(屏幕上和带宽方面)。
  • 超过 36kb 的文件?该代码作为图片发布以显示调试器值。我不知道你的屏幕有多小,但在 1920 * 1080 上显示很好,所以...

标签: c mktime


【解决方案1】:

根据the documentationtm_mon字段是从0开始的,所以1实际上是二月。

但是,tm_mday 字段是从 1 开始的。它们不同,这有点烦人。

【讨论】:

  • 哈哈天哪。具有讽刺意味的是,我实际上也读过它,而我的大脑完全掩盖了这一事实。事情总是简单的sigh
【解决方案2】:
int tm_mon;         /* month, range 0 to 11             */

1代表二月的值需要改为0

【讨论】:

  • 这一行似乎摘录了结构的标题 def 可以对 OP 进行更多解释。我认为您的意思是月份减 1,因为它们从 0 而不是 1 开始。说明这一点,而不是粘贴的代码会使答案更有帮助。
  • 感谢@DannyStaple 的留言。这不是定义的摘录。只是想有简约的答案
  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • @UmNyobe 我刚刚添加了一些额外的信息,但是您在哪里看到答案中的链接?
  • 编辑前过于简约。这是我在审核队列中最接近的选择。
猜你喜欢
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
相关资源
最近更新 更多