// so long as the above copyright and this permission statement
// are retained in all copies.
//
-// Licence: wxWidgets licence
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
/*
{
wxCHECK_MSG( wday != Inv_WeekDay, _T(""), _T("invalid weekday") );
- // take some arbitrary Sunday
+ // take some arbitrary Sunday (but notice that the day should be such that
+ // after adding wday to it below we still have a valid date, e.g. don't
+ // take 28 here!)
tm tm;
InitTm(tm);
- tm.tm_mday = 28;
+ tm.tm_mday = 21;
tm.tm_mon = Nov;
tm.tm_year = 99;
jdn *= MILLISECONDS_PER_DAY;
+ // JDNs always suppose an UTC date, so bring it back to local time zone
+ // (also see GetJulianDayNumber() implementation)
+ long tzDiff = GetTimeZone();
+ if ( IsDST() == 1 )
+ {
+ // FIXME: again, we suppose that DST is always one hour
+ tzDiff -= 3600;
+ }
+
+ jdn += tzDiff*1000; // tzDiff is in seconds
+
m_time.Assign(jdn);
return *this;
double wxDateTime::GetJulianDayNumber() const
{
- // JDN are always expressed for the GMT dates
- Tm tm(ToTimezone(GMT0).GetTm(GMT0));
+ // JDN are always expressed for the UTC dates
+ Tm tm(ToTimezone(UTC).GetTm(UTC));
double result = GetTruncatedJDN(tm.mday, tm.mon, tm.year);