C++現在のタイムスタンプを取得し、フォーマット時間に変換
2396 ワード
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef struct times
{
int Year;
int Mon;
int Day;
int Hour;
int Min;
int Second;
}Times;
Times stamp_to_standard(unsigned long long stampTime)
{
time_t tick = (time_t)stampTime;
struct tm tm;
char s[100] = {0};
Times standard;
tm = *localtime(&tick);
strftime(s, sizeof(s), "%Y/%m/%d %H:%M:%S", &tm);
printf("%d: %s
", (int)tick, s);
standard.Year = atoi(s);
standard.Mon = atoi(s + 5);
standard.Day = atoi(s + 8);
standard.Hour = atoi(s + 11);
standard.Min = atoi(s + 14);
standard.Second = atoi(s + 17);
return standard;
}
void GetTimeFormStr(string TimeStr, Times &Mystandard)
{
if (TimeStr.length() < 10)
{
return;
}
string pstr = TimeStr.substr(0, 10);
stringstream s;
s << pstr;
unsigned long long i;
s >> i;
Mystandard = stamp_to_standard(i);
}
unsigned long long WINAPI GetTimeTickFrom19700101()
{
SYSTEMTIME systime; // , ,
::GetLocalTime(&systime);
time_t curr_t = time(NULL);
unsigned long long tld = (unsigned long long)curr_t;
unsigned long millSec = (unsigned long)(systime.wMilliseconds);
tld = tld * 1000 + millSec;
return tld;
}
void GetMytime(Times& standard)
{
//
//1.
unsigned long long stampTime=GetTimeTickFrom19700101();
//
//2.longlong string( log )
//
string Result;
ostringstream convert;
convert << stampTime;
Result = convert.str();
//
/*char str[30] = { 0 };
sprintf(str, "%lld", stampTime);
string Result(str);*/
//3. string
GetTimeFormStr(Result, standard);
}
//
int main()
{
unsigned long ticks;
Times standard;
for (int i = 0; i < 5; i++) {
memset(&standard, 0, sizeof(Times));
GetMytime(standard);
char chrTime[100] = { 0 };
sprintf(chrTime, "%04d%s%02d%s%02d%s%02d%s%02d%s%02d%s",
standard.Year,
"/",
standard.Mon,
"/",
standard.Day,
" ",
standard.Hour,
":",
standard.Min,
":",
standard.Second,
"[ ]");
cout << chrTime << endl;
Sleep(1000);
}
system("pause");
return 0;
}
実行結果: