Time, Date and DateTime

R

Rajinder Yadav

Hi,

I am trying to understand the key differences between Time, Date and
DateTime classes.

When should one use one over the other? Does anyone know of a good post
that explains each of these classes and post on how to do basic time,
date arithmetic or conversion between each?
 
S

Siep Korteling

Rajinder said:
Hi,

I am trying to understand the key differences between Time, Date and
DateTime classes.

When should one use one over the other? Does anyone know of a good post
that explains each of these classes and post on how to do basic time,
date arithmetic or conversion between each?

Note: I am by no means an expert on this.

Time provides you with a date and a time and is fine if you are sure the
date ranges from the year 1970 to 2037.
It's excellent for timestamps and such. Essentially, it's just the
number of seconds elapsed since 1970-1-1. So if the provided methods
don't suit you, you have to calculate in seconds, using #to_i and #at .

Date is a heavyweight, allowing for Julian or Gregorian calendars,
specifying the reform dates. You don't have to worry about date ranges
(unless you need dates like -5000-1-1). Calculating is superior to Time
objects.

DateTime is the same as a Date with hours, minutes and seconds.

All three can be enhanced by require-ing active_support.

The creation of a Date object is about ten times slower than the
creation of a time object (on my PC).

In Ruby 1.9 conversion is simple: #to_date, #to_time and #to_datetime.
For versions earlier: google, or copy the 1.9 methods from the
documentation (untested).

hth,

Siep
 
R

Rajinder Yadav

Siep said:
Note: I am by no means an expert on this.

Time provides you with a date and a time and is fine if you are sure the
date ranges from the year 1970 to 2037.
It's excellent for timestamps and such. Essentially, it's just the
number of seconds elapsed since 1970-1-1. So if the provided methods
don't suit you, you have to calculate in seconds, using #to_i and #at .

Date is a heavyweight, allowing for Julian or Gregorian calendars,
specifying the reform dates. You don't have to worry about date ranges
(unless you need dates like -5000-1-1). Calculating is superior to Time
objects.

DateTime is the same as a Date with hours, minutes and seconds.

All three can be enhanced by require-ing active_support.

The creation of a Date object is about ten times slower than the
creation of a time object (on my PC).

In Ruby 1.9 conversion is simple: #to_date, #to_time and #to_datetime.
For versions earlier: google, or copy the 1.9 methods from the
documentation (untested).

hth,

Siep

Hi Siep,

thank you, this is the kind of background (comparison) info I was
looking for. The active_support lib really makes date calculation easy.
 
B

Benoit Daloze

[Note: parts of this message were removed to make it a legal post.]

Just to mention Time in 1.9.2 doesn't get limits:
"Ruby 1.9.2 preview 1 has been released.
[...]

- Time was reimplemented and enhanced. Now Time has no max/min value, no
year 2038 problem."

Time.new(400000000000).to_i.class # If still there is a Earth at that Time => Bignum
Time.new(400000000000).to_i => 12622780739410700400
Time.new(-5000).to_i
=> -219951849600

And it's probably preferred to Date, because you can use it without any
require.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,773
Messages
2,569,594
Members
45,125
Latest member
VinayKumar Nevatia_
Top