【问题标题】:Convert day of year to date将一年中的某一天转换为日期
【发布时间】:2014-08-03 16:47:59
【问题描述】:

如何将年份转换为日期?例如,2004 年的第 104 天是几号?

这与How do you convert POSIX date to day of year in R?相反

【问题讨论】:

    标签: r date julian-date


    【解决方案1】:

    我发现@TMS answer 忽略了原点中指定的年份,将其替换为您正在执行命令的实际年份(如@Shekeine 发现的那样)。不过,这样做似乎效果很好:

    as.Date(104, origin = "2014-01-01")
    

    注意:在这种情况下,一年中的日期为零!

    【讨论】:

    • 谢谢你。我不确定为什么我的代码不再有效(我认为它当时有效)。还为您的答案添加了重要警告。
    • 如上所述,该代码给出了从零开始的一年中的一天(即,1 月 1 日是 DOY=0)。如果您想要一年中更典型的基于 1 的日子(即,1 月 1 日是 DOY=1),您可以使用 origin="2013-12-31"
    【解决方案2】:

    这就是我的做法:

    as.Date(104, format = "%j", origin = "1.1.2014")
    # "2014-04-15"
    

    PS:对于那些想知道是否鼓励回答我自己的问题的人,请看这里:https://meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-if-i-knew-the-answer-before-asking

    【讨论】:

    • 嗨,您上面的代码为我返回[1] "2015-04-15"。运行as.Date(1, format = "%j", origin=paste0("1.1.", "2015")) 返回"2015-01-02"。我在这里错过了什么?
    • 我不确定为什么我的代码不再有效(我认为它当时有效)。我接受了另一个答案。
    • @shekeine 我不明白你的输出有什么问题。如果您担心它会返回 1 月 2 日 - 我认为在这种情况下计数从 0 开始。
    【解决方案3】:
    as.Date(2, origin = '2014-01-01')
    

    至于上述代码给出的输出为 2014-01-03 的问题。

    您可以将原点设置为上一年的最后一天。

    as.Date(2, origin = '2013-12-31')
    

    它就是这样工作的。

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 2016-02-04
      • 2021-03-07
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多