Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Unix时间作为int到本地时间_C++_Time_Localtime_Ctime - Fatal编程技术网

C++ 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根据定义是一种算术类型,您只需

我有一个函数,它以int的形式返回unix时间中的时间戳

我需要在本地时间将此int转换为字符串
dd/mm/yy
。“本地”部分给我带来了问题,如果不是因为这个,我可以自己做一个函数来转换它

我四处搜索过,标准库中的
ctime
类似乎非常适合这样做,方式如下:

int unixtime;

std::cout << std::asctime(std::localtime(unixtime));
int unixtime;

std::cout
time\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);