【问题标题】:What is the extra data when I inspect a Date object?检查 Date 对象时有哪些额外数据?
【发布时间】:2014-02-14 23:04:24
【问题描述】:

日期对象中包含的额外数据是什么?举个例子:

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,0s,0n),+0s,2299161j)

【问题讨论】:

  • 你在 irb 控制台上吗?

标签: ruby date ruby-2.0


【解决方案1】:

您看到的是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日历改革日

但是这些术语是什么意思?

1。什么是天文儒略日数? (@ajd)

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

2。从什么偏移? (@offset)

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

3。历法改革日是哪一天? (@sg)

公历是在不同地区的不同时间引入的。为特定地区引入它的日期是该地区的Day *of* Calendar *Reform*。这在 Date 类中缩写为 sg(表示公历开始)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 2016-03-20
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2015-03-13
    • 1970-01-01
    相关资源
    最近更新 更多