add a TimeZone::PrintOffset(...) method
This commit is contained in:
parent
6a9504fd5f
commit
f7e077a7c5
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2021, Tomasz Sowa
|
* Copyright (c) 2012-2023, Tomasz Sowa
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -166,6 +166,45 @@ return local;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TimeZone::PrintOffsetPart(long val, pt::Stream & str)
|
||||||
|
{
|
||||||
|
if( val < 10 )
|
||||||
|
{
|
||||||
|
str << '0';
|
||||||
|
}
|
||||||
|
|
||||||
|
str << val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TimeZone::PrintOffset(time_t offset, pt::Stream & str)
|
||||||
|
{
|
||||||
|
bool has_sign = false;
|
||||||
|
|
||||||
|
if( offset < 0 )
|
||||||
|
{
|
||||||
|
has_sign = true;
|
||||||
|
offset = 0 - offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
time_t days = offset / 60 / 60 / 24;
|
||||||
|
|
||||||
|
if( days == 0 )
|
||||||
|
{
|
||||||
|
str << ((has_sign) ? '-' : '+');
|
||||||
|
time_t diff = offset - days * 60 * 60 * 24;
|
||||||
|
|
||||||
|
long hour = int(diff / 60 / 60);
|
||||||
|
long min = int((diff - hour * 60 * 60) / 60);
|
||||||
|
|
||||||
|
PrintOffsetPart(hour, str);
|
||||||
|
str << ':';
|
||||||
|
PrintOffsetPart(min, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
time_t TimeZone::CalcUTCOffset(const pt::Date & local_date)
|
time_t TimeZone::CalcUTCOffset(const pt::Date & local_date)
|
||||||
{
|
{
|
||||||
time_t dst_offset = 0;
|
time_t dst_offset = 0;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2014, Tomasz Sowa
|
* Copyright (c) 2012-2023, Tomasz Sowa
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -115,7 +115,7 @@ public:
|
||||||
time_t CalcLocalOffset(const pt::Date & utc_date);
|
time_t CalcLocalOffset(const pt::Date & utc_date);
|
||||||
time_t ToLocal(time_t utc_time);
|
time_t ToLocal(time_t utc_time);
|
||||||
pt::Date ToLocal(const pt::Date & utc_date);
|
pt::Date ToLocal(const pt::Date & utc_date);
|
||||||
|
static void PrintOffset(time_t offset, pt::Stream & str); // prints the offset as [+|-]HH:MM:SS e.g.: +02:00:00
|
||||||
|
|
||||||
/*
|
/*
|
||||||
converting from local time to UTC
|
converting from local time to UTC
|
||||||
|
@ -157,6 +157,7 @@ private:
|
||||||
time_t ParseStrOffset(const wchar_t * str);
|
time_t ParseStrOffset(const wchar_t * str);
|
||||||
time_t GetOffset(pt::Space & space);
|
time_t GetOffset(pt::Space & space);
|
||||||
bool SetTzDst(pt::Space & year);
|
bool SetTzDst(pt::Space & year);
|
||||||
|
static void PrintOffsetPart(long val, pt::Stream & str);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue