|
- #include <cstdio>
- #include <chrono>
- #include <iostream>
- using namespace std;
- time_t GetTime()
- {
- chrono::system_clock::time_point now = chrono::system_clock::now();
- return chrono::system_clock::to_time_t(now);
- }
- tm* GetUtcTm()
- {
- time_t t = GetTime();
- return gmtime(&t);
- }
- tm* GetLocalTm()
- {
- time_t t = GetTime();
- return localtime(&t);
- }
- string GetUtcDateTime()
- {
- auto t = GetTime();
- auto localTm = gmtime(&t);
- char buff[32];
- strftime(buff, 32, "%Y%m%d-%H:%M:%S", localTm);
- return string(buff);
- }
- string GetUtcDate()
- {
- auto t = GetTime();
- auto localTm = gmtime(&t);
- char buff[32];
- strftime(buff, 32, "%Y%m%d", localTm);
- return string(buff);
- }
- string GetUtcTime()
- {
- auto t = GetTime();
- auto localTm = gmtime(&t);
- char buff[32];
- strftime(buff, 32, "%H:%M:%S", localTm);
- return string(buff);
- }
- string GetUtcDateTimeWithMilliSecond()
- {
- auto now = chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now());
- time_t t = chrono::system_clock::to_time_t(now);
- int milliSecond = now.time_since_epoch().count() % 1000;
- auto localTm = gmtime(&t);
- char buff[32];
- int len = strftime(buff, 32, "%Y%m%d-%H:%M:%S", localTm);
- sprintf(buff + len, ".%03u", milliSecond);
- return string(buff);
- }
- string GetLocalDateTime()
- {
- auto t = GetTime();
- auto localTm = localtime(&t);
- char buff[32];
- strftime(buff, 32, "%Y%m%d-%H:%M:%S", localTm);
- return string(buff);
- }
- string GetLocalDate()
- {
- auto t = GetTime();
- auto localTm = localtime(&t);
- char buff[32];
- strftime(buff, 32, "%Y%m%d", localTm);
- return string(buff);
- }
- string GetLocalTime()
- {
- auto t = GetTime();
- auto localTm = localtime(&t);
- char buff[32];
- strftime(buff, 32, "%H:%M:%S", localTm);
- return string(buff);
- }
- string GetLocalDateTimeWithMilliSecond()
- {
- auto now = chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now());
- time_t t = chrono::system_clock::to_time_t(now);
- int milliSecond = now.time_since_epoch().count() % 1000;
- auto localTm = localtime(&t);
- char buff[32];
- int len = strftime(buff, 32, "%Y%m%d-%H:%M:%S", localTm);
- sprintf(buff + len, ".%03u", milliSecond);
- return string(buff);
- }
- string GetLocalDateFromUnixTimeStamp(long long timeStamp)
- {
- time_t time = timeStamp / 1000000000LL;
- static char buff[16];
- int len = strftime(buff, 16, "%Y%m%d", localtime(&time));
- return string(buff);
- }
- string GetLocalTimeFromUnixTimeStamp(long long timeStamp)
- {
- time_t time = timeStamp / 1000000000LL;
- static char buff[16];
- int len = strftime(buff, 16, "%H:%M:%S", localtime(&time));
- return string(buff);
- }
- time_t GetTimeFromString(string dateTime, string format = "%04d%02d%02d-%02d:%02d:%02d")
- {
- tm t;
- int len = sscanf(dateTime.c_str(), format.c_str(), &t.tm_year, &t.tm_mon, &t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec);
- t.tm_year -= 1900;
- t.tm_mon -= 1;
- return mktime(&t);
- }
- string ToUtcDateTime(time_t* time)
- {
- char buff[32];
- strftime(buff, 32, "%Y%m%d-%H:%M:%S", gmtime(time));
- return string(buff);
- }
- string ToUtcDate(time_t* time)
- {
- char buff[32];
- strftime(buff, 32, "%Y%m%d", gmtime(time));
- return string(buff);
- }
- string ToUtcTime(time_t* time)
- {
- char buff[32];
- strftime(buff, 32, "%H:%M:%S", gmtime(time));
- return string(buff);
- }
- string ToLocalDateTime(time_t* time)
- {
- char buff[32];
- strftime(buff, 32, "%Y%m%d-%H:%M:%S", localtime(time));
- return string(buff);
- }
- string ToLocalDate(time_t* time)
- {
- char buff[32];
- strftime(buff, 32, "%Y%m%d", localtime(time));
- return string(buff);
- }
- string ToLocalTime(time_t* time)
- {
- char buff[32];
- strftime(buff, 32, "%H:%M:%S", localtime(time));
- return string(buff);
- }
- int main()
- {
- char buff[32];
- strftime(buff, 32, "%Y%m%d %H:%M:%S", GetUtcTm());
- cout << buff << endl;
- strftime(buff, 32, "%Y%m%d %H:%M:%S", GetLocalTm());
- cout << buff << endl << endl;
- cout << GetUtcDateTime() << endl;
- cout << GetUtcDate() << endl;
- cout << GetUtcTime() << endl;
- cout << GetUtcDateTimeWithMilliSecond() << endl << endl;
- cout << GetLocalDateTime() << endl;
- cout << GetLocalDate() << endl;
- cout << GetLocalTime() << endl;
- cout << GetLocalDateTimeWithMilliSecond() << endl << endl;
- cout << GetLocalDateFromUnixTimeStamp(1635754321199409000L) << endl;
- cout << GetLocalTimeFromUnixTimeStamp(1635754321199409000L) << endl << endl;
- auto time = GetTimeFromString("20211101-08:12:01.224");
- cout << ToUtcDateTime(&time) << endl;
- cout << ToUtcDate(&time) << endl;
- cout << ToUtcTime(&time) << endl;
- cout << ToLocalDateTime(&time) << endl;
- cout << ToLocalDate(&time) << endl;
- cout << ToLocalTime(&time) << endl << endl;
- return 0;
- }
复制代码 输出结果
- 20211103 05:46:16
- 20211103 13:46:16
- 20211103-05:46:16
- 20211103
- 05:46:16
- 20211103-05:46:16.218
- 20211103-13:46:16
- 20211103
- 13:46:16
- 20211103-13:46:16.219
- 20211101
- 16:12:01
- 20211101-00:12:01
- 20211101
- 00:12:01
- 20211101-08:12:01
- 20211101
- 08:12:01
复制代码
|
|