[Gambas-user] Beware to revision #7983!
Benoît Minisini
gambas at ...1...
Fri Nov 18 16:05:26 CET 2016
Hi,
In revision #7983, I fixed a bug in date / string conversion, so that
now, as it is logically expected:
CDate(CStr(CDate(2))) = CDate(2)
BEFORE:
$ gbx3 -e 'CStr(CDate(2))'
01/01/-4801 23:00:00
$ gbx3 -e 'CStr(CDate(CStr(CDate(2))))'
00/00/0000 23:00:00
$ gbx3 -e 'CDate(CStr(CDate(CStr(CDate(2)))))'
Type mismatch: wanted Date, got String instead
AFTER:
$ gbx3 -e 'CStr(CDate(2))'
01/02/-4801
$ gbx3 -e 'CStr(CDate(CStr(CDate(2))))'
01/02/-4801
$ gbx3 -e 'CDate(CStr(CDate(CStr(CDate(2)))))'
01/01/-4801 23:00:00
(Note: The last line is displayed as a local date/time.)
It was not the case before, because the conversion were internally done
by taking the timezone into account, even if date/time values are
internally stored in UTC.
Now CDate() on a string always interpret it as an UTC date, and CStr()
on a date displays its UTC value.
Consequently, check your code!
CStr() and CDate() are not supposed to use a local time representation.
On the contrary. This is the job of Val(), Str() and Format().
If you wrote code that made that assumption, you did wrong.
BEWARE! BEWARE! BEWARE!
--
Benoît Minisini
More information about the User
mailing list