Time range min/max inconsistency


#1

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi!

I created a range of Time objects. My problem (?) is, that the range’s
min() and max() methods return their values in a different format.

I made the following test:

?> t1 = Time.utc(2007,7,17,10,00)
=> Tue Jul 17 10:00:00 UTC 2007

t2 = Time.utc(2007,7,17,12,00)
=> Tue Jul 17 12:00:00 UTC 2007

r=(t1…t2)
=> Tue Jul 17 10:00:00 UTC 2007…Tue Jul 17 12:00:00 UTC 2007

r.min
=> Tue Jul 17 10:00:00 UTC 2007

r.max
=> Tue Jul 17 14:00:00 +0200 2007

As you may see r.max returns the correct value, however it is in a
different time format as r.min’s return value (and different from the
initial value).

If I use these values in a user interface, the max value must be
converted to a UTC time with r.max.utc before i can format it with
strftime().

Do you think this is a bug, or should i read more ruby literature? :slight_smile:

I’m pretty new to ruby, so please don’t slap me in the face for this. :slight_smile:

Thank you,
Chris


Fischer
KrisztiánBorganization Kft.
Tel: (+36) 70/384-383-5
Tel: (+36) 1/3360547
email: removed_email_address@domain.invalid
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGnMz46VUohGTtAQYRAl76AJ4jZH+mHmJzQWqn17GUJAl6yDi8lgCgxBZj
anm75OzaJYA1v1hQyrh+w3Y=
=cXVu
-----END PGP SIGNATURE-----


#2

Do you think this is a bug, or should i read more ruby literature? :slight_smile:

I don’t know if this is related to your problem, but whenever I use
Marshal.load to load a marshaled Time object, it’s always created in the
local timezone, regardless of what zone the saved object was in. This
is similar behavior, although I’m pretty sure Ranges don’t use Marshal,
and it’s weird that it’s just the max.


#3

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Brett S. wrote:

=> Tue Jul 17 14:00:00 +0200 2007
I don’t know if this is related to your problem, but whenever I use
Marshal.load to load a marshaled Time object, it’s always created in the
local timezone, regardless of what zone the saved object was in. This
is similar behavior, although I’m pretty sure Ranges don’t use Marshal,
and it’s weird that it’s just the max.

Thanks for the answer.

Seems to me like timezone is the black sheep in ruby. Today I ran into
the problem described above, and shortly after this into an other one.

If you store a UTC time in mysql via rails’ ActiveRecord and read it
back, the local timezone is added to the time, which is pretty strange.

I could fix the problem with a small hack, however as a ruby newbie it
took me a day to figure this out. :slight_smile:

Thanks,
Chris


Fischer
KrisztiánBorganization Kft.
Tel: (+36) 70/384-383-5
Tel: (+36) 1/3360547
email: removed_email_address@domain.invalid
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGnVEA6VUohGTtAQYRAjR8AJ0UbIKu37o/ikmuqzsSWKmgAk11+gCeKl8H
08K2vUyDVr1giGzH+Tb88sc=
=RX1m
-----END PGP SIGNATURE-----


#4

Hi,

In message “Re: Time range min/max inconsistency”
on Tue, 17 Jul 2007 23:07:04 +0900, Fischer
Krisztián removed_email_address@domain.invalid writes:

|I created a range of Time objects. My problem (?) is, that the range’s
|min() and max() methods return their values in a different format.
|
|I made the following test:
|
|?> t1 = Time.utc(2007,7,17,10,00)
|=> Tue Jul 17 10:00:00 UTC 2007
|
|>> t2 = Time.utc(2007,7,17,12,00)
|=> Tue Jul 17 12:00:00 UTC 2007
|
|>> r=(t1…t2)
|=> Tue Jul 17 10:00:00 UTC 2007…Tue Jul 17 12:00:00 UTC 2007
|
|>> r.min
|=> Tue Jul 17 10:00:00 UTC 2007
|
|>> r.max
|=> Tue Jul 17 14:00:00 +0200 2007

You’ve found a bug in Ruby. It’s fixed in the repository.
Thank you for the report.

          matz.

#5

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Yukihiro M. wrote:

You’ve found a bug in Ruby. It’s fixed in the repository.

Thanks for the fast answer, and for Ruby. :slight_smile:

Thank you for the report.

It was a pleasure. :slight_smile:

Chris


Fischer
KrisztiánBorganization Kft.
Tel: (+36) 70/384-383-5
Tel: (+36) 1/3360547
email: removed_email_address@domain.invalid
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGnVgd6VUohGTtAQYRAj7GAKCHBjPqncLmIhu7lPVcn85/7PYhbwCgiMuN
RA9k5cb3v/4HRI3C+5htM/I=
=9Zda
-----END PGP SIGNATURE-----


#6

From: Yukihiro M. [mailto:removed_email_address@domain.invalid]

removed_email_address@domain.invalid writes:

|?> t1 = Time.utc(2007,7,17,10,00)

|=> Tue Jul 17 10:00:00 UTC 2007

|

|>> t2 = Time.utc(2007,7,17,12,00)

|=> Tue Jul 17 12:00:00 UTC 2007

|

|>> r=(t1…t2)

|=> Tue Jul 17 10:00:00 UTC 2007…Tue Jul 17 12:00:00 UTC 2007

|

|>> r.min

|=> Tue Jul 17 10:00:00 UTC 2007

|

|>> r.max

|=> Tue Jul 17 14:00:00 +0200 2007

You’ve found a bug in Ruby. It’s fixed in the repository.

Thank you for the report.

matz, i find the ruby src/test very helpful. Is *updating the ruby
src/test available for the public or only for ruby-core?

kind regards -botp


#7

Hi,

In message “Re: Time range min/max inconsistency”
on Wed, 18 Jul 2007 13:46:24 +0900, “Pena, Botp”
removed_email_address@domain.invalid writes:

|matz, i find the ruby src/test very helpful. Is *updating the ruby src/test available for the public or only for ruby-core?

If you submit a patch for the test (preferable to the ruby-core list),
it is likely to be committed to the repository, by any of our
committers (perhaps me).

          matz.