C++ Unix时间作为int到本地时间
我有一个函数,它以int的形式返回unix时间中的时间戳 我需要在本地时间将此int转换为字符串C++ Unix时间作为int到本地时间,c++,time,localtime,ctime,C++,Time,Localtime,Ctime,我有一个函数,它以int的形式返回unix时间中的时间戳 我需要在本地时间将此int转换为字符串dd/mm/yy。“本地”部分给我带来了问题,如果不是因为这个,我可以自己做一个函数来转换它 我四处搜索过,标准库中的ctime类似乎非常适合这样做,方式如下: int unixtime; std::cout << std::asctime(std::localtime(unixtime)); int unixtime; std::couttime\u t根据定义是一种算术类型,您只需
dd/mm/yy
。“本地”部分给我带来了问题,如果不是因为这个,我可以自己做一个函数来转换它
我四处搜索过,标准库中的ctime
类似乎非常适合这样做,方式如下:
int unixtime;
std::cout << std::asctime(std::localtime(unixtime));
int unixtime;
std::couttime\u t
根据定义是一种算术类型,您只需执行以下操作:
time_t ts = unixtime;
std::cout << std::asctime(std::localtime(&ts));
time\u t ts=unixtime;
std::cout'/*本地时间示例*/
#包括/*看跌期权,printf*/
#包括/*time\u t、struct tm、time、localtime*/
int main()
{
时间与时间;
结构tm*时间信息;
时间(&rawtime);
timeinfo=localtime(&rawtime);
printf(“当前本地时间和日期:%s”,asctime(timeinfo));
返回0;
}'
您可以简单地使用类型time,它将为您提供时间。“ctime()、gmtime()和localtime()函数都采用表示日历时间的数据类型time的参数。当解释为绝对时间值时,它表示自1970-01-01 00:00:00+0000(UTC)纪元以来经过的秒数。”
来源:
要以日/月/年打印当前时间,您可以尝试以下操作:
#include <iostream>
#include <ctime>
int main(int argc, const char** argv)
{
char date_buff[40];
time_t time_value = time(0);
struct tm* my_tm = localtime(&time_value);
strftime(date_buff, sizeof(date_buff), "%d/%m/%y\n", my_tm);
std::cout << date_buff << std::endl;
return 0;
}
#包括
#包括
int main(int argc,常量字符**argv)
{
char date_buff[40];
时间t时间值=时间(0);
struct tm*my_tm=localtime(&time_值);
strftime(date\u buff,sizeof(date\u buff),%d/%m/%y\n,“我的tm”);
std::cout时间的类型不受C规范的保证
Unix和POSIX兼容系统将time\t
类型实现为有符号整数(通常为32或64位宽),表示自Unix纪元开始以来的秒数
std::time_t my_time = static_cast<std::time_t>(unixtime);
std::time\u t my\u time=static\u cast(unixtime);
但是,最好不要假设时间是一个int
,用适当的时间处理替换时间函数,并返回std::time\u t
或struct tm
谢谢,非常感谢。
std::time_t my_time = static_cast<std::time_t>(unixtime);