Linux get time demo

Get current time and timestamp (decimal, hexadecimal)

#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>
#include <sstream>

// 将时间转换为时间戳
uint64_t get_timestamp() {
    auto now = std::chrono::system_clock::now();
    auto duration = now.time_since_epoch();
    uint64_t timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
    return timestamp;
}

// 将时间转换为时间戳
std::string get_timestamp_hex() {
    auto now = std::chrono::system_clock::now();
    auto duration = now.time_since_epoch();
    uint64_t timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
    std::stringstream ss;
    ss << std::hex << timestamp;
    return ss.str();
}

int main(int argc, char *argv[])
{
    auto now = std::chrono::system_clock::now();
    uint64_t dis_millseconds = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count()- std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()).count() * 1000;
    time_t tt = std::chrono::system_clock::to_time_t(now);
    auto time_tm = localtime(&tt);
    char strTime[25] = { 0 };
    sprintf(strTime, "%d-%02d-%02d %02d:%02d:%02d %03d", time_tm->tm_year + 1900, time_tm->tm_mon + 1, time_tm->tm_mday, time_tm->tm_hour, time_tm->tm_min, time_tm->tm_sec, (int)dis_millseconds);
    std::cout << "当前时间:" << strTime << std::endl;

	uint64_t timestamp = get_timestamp();
    std::cout << "当前时间戳:" << std::to_string(timestamp) << std::endl;
	
    std::string timestamp_hex = get_timestamp_hex();
    std::cout << "当前时间戳:" << timestamp_hex << " (16进制)" << std::endl;

    return 1;
}

Enter the current time to convert decimal and hexadecimal timestamps

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>
#include <sstream>

// 将时间戳转换为十六进制字符串
std::string timestamp_to_hex(uint64_t timestamp) {
    std::stringstream ss;
    ss << std::hex << timestamp;
    return ss.str();
}

// 将时间转换为时间戳
uint64_t time_to_timestamp(const std::string &time_str) {
    std::tm tm_time = {0};
    std::stringstream ss(time_str);
    ss >> std::get_time(&tm_time, "%Y-%m-%d %H:%M:%S");
    auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm_time));
    uint64_t timestamp = std::chrono::time_point_cast<std::chrono::milliseconds>(tp).time_since_epoch().count();
    return timestamp;
}

int main(int argc, char *argv[])
{
	while(1){
		std::string time_str;
		std::cout << "请输入时间 (格式: YYYY-MM-DD HH:MM:SS):";
		std::getline(std::cin, time_str);

		uint64_t timestamp = time_to_timestamp(time_str);
		std::cout << time_str << " 对应的时间戳: " << timestamp << std::endl;
		std::cout << "当前时间戳:" << timestamp_to_hex(timestamp) << " (16进制)" << std::endl;
	}
    return 0;
}

Enter a hexadecimal timestamp to convert to time and a decimal timestamp

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>
#include <sstream>

// 将时间戳转换为十六进制字符串
std::string timestamp_to_hex(uint64_t timestamp) {
    std::stringstream ss;
    ss << std::hex << timestamp;
    return ss.str();
}

// 将十六进制时间戳转换为十进制时间戳
uint64_t hex_timestamp_to_timestamp(const std::string &hex_timestamp) {
    uint64_t timestamp;
    std::stringstream ss;
    ss << std::hex << hex_timestamp;
    ss >> timestamp;
    return timestamp;
}

// 将时间戳转换为正常时间字符串
std::string timestamp_to_time(uint64_t timestamp) {
    auto tp = std::chrono::time_point<std::chrono::system_clock,std::chrono::milliseconds>(std::chrono::milliseconds(timestamp));
    std::time_t t = std::chrono::system_clock::to_time_t(tp);
    std::tm tm_time = *std::localtime(&t);
    std::stringstream ss;
    ss << std::put_time(&tm_time, "%Y-%m-%d %H:%M:%S");
    return ss.str();
}

int main(int argc, char *argv[])
{
	while(1){
		std::string hex_timestamp_str;
		std::cout << "请输入十六进制时间戳:";
		std::getline(std::cin, hex_timestamp_str);

		// 将十六进制时间戳转换为十进制时间戳
		uint64_t timestamp = hex_timestamp_to_timestamp(hex_timestamp_str);
		std::cout << "转换后的十进制时间戳:" << timestamp << std::endl;

		// 将时间戳转换为正常时间字符串
		std::string time_str = timestamp_to_time(timestamp);
		std::cout << "转换后的时间:" << time_str << std::endl;
	}
    return 0;
}

Guess you like

Origin blog.csdn.net/m0_58235748/article/details/131010918