iter_type get_epoch(iter_type i, iter_type e, std::ios_base& is, std::ios_base::iostate& err) const { if (std::has_facet<time_point_units<CharT> >(is.getloc())) { time_point_units<CharT> const &facet = std::use_facet<time_point_units<CharT> >(is.getloc()); return get_epoch(facet, i, e, is, err); } else { time_point_units_default<CharT> facet; return get_epoch(facet, i, e, is, err); } }
void get_gmtime( ztm *tm, sec_type when ) { if ( !when ) get_epoch( &when ); #ifdef WIN32 time_t time = static_cast<time_t>(when); ::gmtime_s( tm, &time ); #else ::gmtime_r( &when, tm ); #endif /* WIN32 */ tm->ZTM_GMTOFF = 0; }
void get_localtime( ztm *tm, sec_type when ) { if ( !when ) get_epoch( &when ); #ifdef WIN32 time_t time = static_cast<time_t>(when); ::localtime_s( tm, &time ); tm->ZTM_GMTOFF = - _timezone; // seconds west -> east #else ::localtime_r( &when, tm ); #if !defined(ZORBA_HAVE_STRUCT_TM_TM_GMTOFF) && \ !defined(ZORBA_HAVE_STRUCT_TM___TM_GMTOFF) tm->ZTM_GMTOFF = ::timegm( tm ) - when; #endif #endif /* WIN32 */ }