检查Date对象时的额外数据是什么?

时间:2014-02-14 23:04:25

标签: ruby date ruby-2.0

日期对象中包含哪些额外数据?给出以下示例:

time = Time.at(1392328830)
# => 2014-02-13 15:00:30 -0700
date = time.to_date
# => #<Date: 2014-02-13 ((2456702j,0s,0n),+0s,2299161j)>

这一切代表什么?通过查看Ruby Date documentation来看,目前尚不清楚。

  

((2456702j,0,0N),+ 0,2299161j)

1 个答案:

答案 0 :(得分:4)

您所看到的是Object.inspect的输出a human-readable representation of an object。对于Date类:

来自 date.rb

# Return internal object state as a programmer-readable string.
def inspect() format('#<%s: %s,%s,%s>', self.class, @ajd, @of, @sg) end

# Return the date as a human-readable string.
#
# The format used is YYYY-MM-DD.
def to_s() strftime end

实例变量是:

  1. @ajd天文朱利安日数
  2. @of偏移量或UTC的一天中的一小部分
  3. @sg日历改革日
  4. 但这些术语是什么意思?

    1。什么是天文朱利安日数? (@ajd)

      

    出于科学目的,将日期简单地称为日期计数是方便的,从任意的初始日算起。首先选择的日期是公元前4713年1月1日。从此日期开始的天数是 Julian * Day * Number Julian * Date *。这是当地时间,从第一天的午夜算起。更严格的使用是UTC,从第一天的中午算起。这在Date类中被称为 Astronomical * Julian * Day * Number *。在Date类中,Astronomical Julian Day Number包括小数天。

    2。抵消什么? (@Offset)

      

    时区表示为与UTC的偏移量,仅为一天的一小部分。此偏移量是晚于(或早于)UTC的本地时间。 UTC偏移0以英格兰为中心(也称为GMT)。当您向东行驶时,偏移量会增加,直到您到达太平洋中部的日期线;当你向西旅行时,偏移量会减少。

    3。什么是日历改革日? (@sg)

      

    格里高利历在不同地区的不同时间引入。为特定区域引入它的日期是该区域的* 日历 * Reform *的 *。这在Date类中缩写为sg(对于公历的开始)。

    据我所知,阳历是通过闰年自我纠正的日历。