将日期向量转换为R中的Julian日

use*_*363 14 r date julian-date

我有一个日期列的格式:16Jun10,我想提取朱利安日.我有各种各样的岁月.

我已经尝试过julian和mdy.date这些函数,但似乎没有用.

Mar*_*box 24

尝试以下操作从类character(即文本)转换为类POSIXlt,然后提取Julian day(yday):

tmp <- as.POSIXlt("16Jun10", format = "%d%b%y")
tmp$yday
# [1] 166
Run Code Online (Sandbox Code Playgroud)

有关功能设置的更多详细信息:

?POSIXlt
?DateTimeClasses
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用一个Date类,然后format用来提取朱利安日(注意这个类定义了1:366之间的朱利安日,而POSIXlt是0:365):

tmp <- as.Date("16Jun10", format = "%d%b%y")
format(tmp, "%j")
# [1] "167"
Run Code Online (Sandbox Code Playgroud)

  • 这个最佳答案谈论的是_年中的日期/序数日期_,而*不是*关于_[儒略日期](https://en.wikipedia.org/wiki/Julian_day)_。Julian 日期是从公元前 4713 年 (!!) 开始的天数。为什么这个答案被点赞了这么多次? (3认同)
  • 请参阅[*术语*](https://en.wikipedia.org/wiki/Julian_day#Terminology)小节-*“在天文学之外,朱利安日期一词也可能指年份的数字(更恰当地说(公历),尤其是在计算机编程中。” *。我想程序员比起天文学家来投票要更多。 (2认同)

Joh*_*ohn 19

同理:

require(lubridate)
x = as.Date('2010-06-10')
yday(x)

[1] 161
Run Code Online (Sandbox Code Playgroud)

另请注意,使用lubridate:

> dmy('16Jun10')
[1] "2010-06-16 UTC"
Run Code Online (Sandbox Code Playgroud)


And*_*rei 7

您可以使用R的insol包,它具有JD(x, inverse=FALSE)将POSIXct转换为Julian Day Number(JDN)的功能.

insol包也有JDymd(year,month,day,hour=12,minute=0,sec=0)自定义日期.

要显示您可能必须设置的整个儒略日期(JD)options(digits=16).