【问题标题】:Convert A POSIXt Time To A Julian Day将 POSIXt 时间转换为儒略日
【发布时间】:2021-01-15 10:35:16
【问题描述】:

我一直在寻找将 POSIXct 格式的日期转换为儒略日的方法 _ 儒略日编号 (JDN) 是从世界时间中午开始的儒略日计数中分配给整个太阳日的整数,其中儒略日编号 0 分配给从公元前 4713 年 1 月 1 日星期一中午开始的一天,预示儒略日历(公元前 4714 年 11 月 24 日,在公历中) _

但我只是想出了如何制作一年的一天 - 闰年从 1 到 365。 有人可以帮我找到一些将 POSIXct 日期(如:2010-10-02 21:00:00)转换为儒略日期的函数吗?

我在数据框中有一列,其中有几个日期要转换为儒略日。

head(head(all_jub2$timestamp_adjusted)
[1] 2010-10-02 21:00:00 2010-10-03 03:00:00 2010-10-03 09:00:00 2010-10-03 15:00:00
[5] 2010-10-03 21:00:00 2010-10-04 03:00:00
6120 Levels: 2003-10-17 21:00:00 2003-10-18 03:00:00 ... 2020-01-10 09:00:00

【问题讨论】:

    标签: r date transform posixct


    【解决方案1】:

    如果你从正确的点开始,你可以使用base R 来做到这一点。您问题中的文本您的数据仍然是factor-type 变量。这不好——你需要解析它,例如anytime 包的anytime() 函数可以帮助你。请在此处查看其他问题。

    回到问题。如果您从当前时间的 POSIXct 变量开始,并且在一小时前为了论证的缘故有向量,我们可以 a) 将其转换为 Date,然后 b) 从 Date 转换为 Julian:

    R> input <- Sys.time() + c(-3600,0)
    R> input
    [1] "2020-09-29 13:07:50.225898 CDT" "2020-09-29 14:07:50.225898 CDT"
    R> as.Date(input)
    [1] "2020-09-29" "2020-09-29"
    R> julian(as.Date(input))
    [1] 18534 18534
    attr(,"origin")
    [1] "1970-01-01"
    R> 
    

    所以今天我们的儒略日期是 18534。对于您的前两个数据点,我们得到 14884 和 14885。

    R> input <- c("2010-10-02 21:00:00", "2010-10-03 03:00:00")
    R> anytime::anydate(input)
    [1] "2010-10-02" "2010-10-03"
    R> julian(anytime::anydate(input))
    [1] 14884 14885
    attr(,"tzone")
    [1] "America/Chicago"
    attr(,"origin")
    [1] "1970-01-01"
    R> 
    

    如果您只想一年中的某一天,您可以将其作为 POSIXlt 表示的组件 yday,但您需要调整一个,因为它是从零开始的:

    R> as.POSIXlt(anytime::anytime(input))$yday + 1
    [1] 275 276
    R> 
    

    【讨论】:

      【解决方案2】:

      lubridate 包使处理日期变得容易。这能解决您的问题吗?

      library(lubridate)
      
      date <- as.POSIXct('2010-10-02 21:00:00')
      
      julian <- yday(date)
      

      【讨论】:

        【解决方案3】:

        感谢您的回答,但我找到了我一直在寻找的使用包insol

        library(insol)
        
        julian_day <- insol::JD(as.POSIXct('2010-10-02 21:00:00'))
        [1] 2455473
        
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-23
          • 2021-08-02
          • 2015-11-08
          • 2013-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多