fix: take into account hours when calculating a relative timezone dst
This commit is contained in:
parent
09dc6782c8
commit
71ad4869ce
|
@ -66,13 +66,13 @@ int TimeZone::DstDate::Compare(const pt::Date & utc_date) const
|
||||||
else
|
else
|
||||||
if( date_type == first_weekday )
|
if( date_type == first_weekday )
|
||||||
{
|
{
|
||||||
pt::Date tmp_date = CalculateRelativeDate(utc_date.year, date.month, true, weekday);
|
pt::Date tmp_date = CalculateRelativeDate(utc_date.year, date.month, true, weekday, date.hour, date.min, date.sec);
|
||||||
res = tmp_date.Compare(utc_date, true);
|
res = tmp_date.Compare(utc_date, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if( date_type == last_weekday )
|
if( date_type == last_weekday )
|
||||||
{
|
{
|
||||||
pt::Date tmp_date = CalculateRelativeDate(utc_date.year, date.month, false, weekday);
|
pt::Date tmp_date = CalculateRelativeDate(utc_date.year, date.month, false, weekday, date.hour, date.min, date.sec);
|
||||||
res = tmp_date.Compare(utc_date, true);
|
res = tmp_date.Compare(utc_date, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,11 +80,14 @@ int TimeZone::DstDate::Compare(const pt::Date & utc_date) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pt::Date TimeZone::DstDate::CalculateRelativeDate(int year, int month, bool is_first, int weekday)
|
pt::Date TimeZone::DstDate::CalculateRelativeDate(int year, int month, bool is_first, int weekday, int hour, int min, int sec)
|
||||||
{
|
{
|
||||||
pt::Date new_date;
|
pt::Date new_date;
|
||||||
new_date.year = year;
|
new_date.year = year;
|
||||||
new_date.month = month;
|
new_date.month = month;
|
||||||
|
new_date.hour = hour;
|
||||||
|
new_date.min = min;
|
||||||
|
new_date.sec = sec;
|
||||||
|
|
||||||
if( is_first )
|
if( is_first )
|
||||||
{
|
{
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
DstDate();
|
DstDate();
|
||||||
void Clear();
|
void Clear();
|
||||||
int Compare(const pt::Date & utc_date) const;
|
int Compare(const pt::Date & utc_date) const;
|
||||||
static pt::Date CalculateRelativeDate(int year, int month, bool is_first, int weekday);
|
static pt::Date CalculateRelativeDate(int year, int month, bool is_first, int weekday, int hour, int min, int sec);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue