add a TimeZone::PrintOffset(...) method

This commit is contained in:
2023-08-29 15:02:37 +02:00
parent 6a9504fd5f
commit f7e077a7c5
2 changed files with 43 additions and 3 deletions

View File

@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2012-2021, Tomasz Sowa
* Copyright (c) 2012-2023, Tomasz Sowa
* All rights reserved.
*
* 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 dst_offset = 0;