C++現在のタイムスタンプを取得し、フォーマット時間に変換


#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; }

実行結果: