gpt4 book ai didi

c++ - 较大年份 (2048) 的纪元 unix 时间值不正确

转载 作者:行者123 更新时间:2023-11-30 04:21:02 27 4
gpt4 key购买 nike

我需要获取日期和时间输入的纪元时间,但是当我输入 2048(年)时,我得到的值非常大,“18446744073709551615”,这应该是不正确的..

当我输入 2012(年)、2015(年)等日期时,纪元值是正确的,我需要为 2048(年)做任何更改

time_t get_unix_time(int,int,int,int,int,int,int);
int main()
{
unsigned long long m_process_date;
m_process_date = get_unix_time (12,31,2048,23,59,58,-1);
std::cout<<"\n m_process_date:"<< m_process_date<<std::endl;
return 1;
}


time_t get_unix_time( int month,
int day,
int year,
int hour,
int minute,
int second,
int dst )
{
tm ts;

ts.tm_mon = month - 1;
ts.tm_mday = day;

if( year < 100 )
ts.tm_year = year + 100;
else
ts.tm_year = year - 1900;

ts.tm_hour = hour;
ts.tm_min = minute;
ts.tm_sec = second;
ts.tm_isdst = dst;

return mktime( &ts );
}

最佳答案

标准 Unix 时间存储在一个带符号的整数中。这是正常的 32 位,但可能因实现而异(一些新实现将 time_t 存储为带符号的 64 位 int)。

因此,对于 32 位有符号整数,这意味着最大可表示日期为 2038 年 1 月 19 日

关于c++ - 较大年份 (2048) 的纪元 unix 时间值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com