Skip to content

Instantly share code, notes, and snippets.

@heatblazer
Created November 3, 2020 12:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save heatblazer/367d4e19e4890294e84780205d0ba364 to your computer and use it in GitHub Desktop.
Save heatblazer/367d4e19e4890294e84780205d0ba364 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <string.h>
class TimeFormat
{
struct {
time_t abs_ts;
time_t loc_ts;
time_t gmt_ts;
struct tm loc_time_info;
struct tm gmt_time_info;
} m_times;
public:
TimeFormat()
{
memset(&m_times, 0, sizeof(m_times));
}
template<typename T=time_t>
void convert(const T t)
{
localtime_r(&t,&m_times.loc_time_info);
gmtime_r(&t,&m_times.gmt_time_info);
m_times.loc_ts=mktime(&m_times.loc_time_info);
m_times.gmt_ts=mktime(&m_times.gmt_time_info);
/*summer time. Get rid of it:*/
if(m_times.gmt_time_info.tm_isdst==1)
m_times.gmt_ts-=3600;
}
void now()
{
time_t t;
time(&t);
localtime_r(&t,&m_times.loc_time_info);
gmtime_r(&t,&m_times.gmt_time_info);
m_times.loc_ts=mktime(&m_times.loc_time_info);
m_times.gmt_ts=mktime(&m_times.gmt_time_info);
/*summer time. Get rid of it:*/
if(m_times.gmt_time_info.tm_isdst==1)
m_times.gmt_ts-=3600;
}
operator char* ()
{
static char data[256] ;
snprintf(data, sizeof(data), "Y-%d:M-%d:D-%d:H-%d:M-%d:S-%d", m_times.gmt_time_info.tm_year+1900,
m_times.gmt_time_info.tm_mon+1,
m_times.gmt_time_info.tm_mday,
m_times.gmt_time_info.tm_hour,
m_times.gmt_time_info.tm_min,
m_times.gmt_time_info.tm_sec);
return data;
}
};
int main(void)
{
TimeFormat tf;
time_t t = (time_t)1604337454;
tf.convert(t);
char* d = (char*)tf;
std::cout << d << "\r\n";
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment