diff options
Diffstat (limited to 'xfa/fxfa/parser/cxfa_timezoneprovider.cpp')
-rw-r--r-- | xfa/fxfa/parser/cxfa_timezoneprovider.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/xfa/fxfa/parser/cxfa_timezoneprovider.cpp b/xfa/fxfa/parser/cxfa_timezoneprovider.cpp new file mode 100644 index 0000000000..65ce61e10b --- /dev/null +++ b/xfa/fxfa/parser/cxfa_timezoneprovider.cpp @@ -0,0 +1,36 @@ +// Copyright 2017 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "xfa/fxfa/parser/cxfa_timezoneprovider.h" + +#include <time.h> + +static bool g_bProviderTimeZoneSet = false; + +CXFA_TimeZoneProvider::CXFA_TimeZoneProvider() { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + if (!g_bProviderTimeZoneSet) { + g_bProviderTimeZoneSet = true; + _tzset(); + } + m_tz.tzHour = static_cast<int8_t>(_timezone / 3600 * -1); + m_tz.tzMinute = static_cast<int8_t>((FXSYS_abs(_timezone) % 3600) / 60); +#else + if (!g_bProviderTimeZoneSet) { + g_bProviderTimeZoneSet = true; + tzset(); + } + m_tz.tzHour = static_cast<int8_t>(timezone / 3600 * -1); + m_tz.tzMinute = + static_cast<int8_t>((FXSYS_abs(static_cast<int>(timezone)) % 3600) / 60); +#endif +} + +CXFA_TimeZoneProvider::~CXFA_TimeZoneProvider() {} + +void CXFA_TimeZoneProvider::GetTimeZone(FX_TIMEZONE* tz) const { + *tz = m_tz; +} |