# Ruby Tuesday – Date#jd

Today’s Ruby Tuesday covers Date#jd.

`Date#jd` returns the number of days since the beginning of the Julian calendar.

```require 'date'
# => true

Date.new.jd
# => 0
Date.new(2015, 04, 14).jd
# => 2457127
Date.new(0, 1, 1).jd
# => 1721058
```

If you notice above, we get `1721058` for the days since the start of the Julian calendar. One thing to notice is that we can pass an optional “Julian day number which denotes the day of calendar reform” to `Date#new`. If we pass in the constant `Date::GREGORIAN` to `new`, and then call `Date#jd` on the result, we get a different value coming back for the number of days since the start of the Julian calendar, `1721060` vs `1721058`.

```Date.new(0, 1, 1, Date::GREGORIAN).jd
=> 1721060
```

While Ruby does not have a corresponding method for getting the number of days since the start of the Gregorian calendar, we can do a difference between the number of Julian days for a date and the number of Julian days for the date 0000-01-01. But be warned, as we just saw above, to get an accurate number, we need to specify that we want 0000-01-01 to be the Gregorian version of that date.

```Date.new(2015, 04, 14).jd - Date.new(0, 1, 1).jd
# => 736069
Date.new(2015, 04, 14).jd - Date.new(0, 1, 1, Date::GREGORIAN).jd
# => 736067
Date.new(2015, 04, 14, Date::GREGORIAN).jd - Date.new(0, 1, 1, Date::GREGORIAN).jd
# => 736067
```

If we just construct a new `Date`, and do not specify and Julian start date, we notice that we can see the number of Julian days in the constructor, and if we specify we want the date to be Gregorian calendar based, we can see the number of Julian days is different there as well.

```Date.new(0, 1, 1)
# => #<Date: 0000-01-01 ((1721058j,0s,0n),+0s,2299161j)>
Date.new(0, 1, 1, Date::GREGORIAN)
# => #<Date: 0000-01-01 ((1721060j,0s,0n),+0s,-Infj)>
```

Hope this shined as little bit of knowledge on Ruby `Date`s for you as it did me.

–Proctor