获取当前时间和时间戳(十进制,十六进制)
#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;
}
输入当前时间转换成十进制和十六进制时间戳
#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;
}
输入一个十六进制的时间戳转换成时间和十进制的时间戳
#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;
}