Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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+中自历元起的天数+;(跨平台) C++中的历元以来,我知道我应该使用 MKTIME> /COD>函数,但是我不能理解如何实现它< /P>_C++_Cross Platform_Epoch_Mktime - Fatal编程技术网

获取C+中自历元起的天数+;(跨平台) C++中的历元以来,我知道我应该使用 MKTIME> /COD>函数,但是我不能理解如何实现它< /P>

获取C+中自历元起的天数+;(跨平台) C++中的历元以来,我知道我应该使用 MKTIME> /COD>函数,但是我不能理解如何实现它< /P>,c++,cross-platform,epoch,mktime,C++,Cross Platform,Epoch,Mktime,谢谢 从以下位置修改一些示例代码: #包括 #包括 int main() { 时间t秒; 秒=时间(空); int daysSinceEpoch=秒/(60*60*24); printf(“自1970年1月1日起%ld天”,daysSinceEpoch); 返回0; } 首先获取当前时间,使用时间(NULL)。将该值传递给gmtime,这将返回一个tm*。请阅读tm文档,正确使用日期不容易。目前的标准库没有提供正确执行此操作的能力。您应该使用适当的日期库,例如boost::date或 使用Hin

谢谢

从以下位置修改一些示例代码:

#包括
#包括
int main()
{
时间t秒;
秒=时间(空);
int daysSinceEpoch=秒/(60*60*24);
printf(“自1970年1月1日起%ld天”,daysSinceEpoch);
返回0;
}

首先获取当前时间,使用
时间(NULL)
。将该值传递给
gmtime
,这将返回一个
tm*
。请阅读
tm

文档,正确使用日期不容易。目前的标准库没有提供正确执行此操作的能力。您应该使用适当的日期库,例如boost::date或

使用Hinnant的库,代码可能如下所示:

date epoch = year(1970)/jan/day(1); // Assuming you're referring to the traditional Unix epoch (some systems such as Cocoa on OS X use the first day of the millenium, Jan 1, 2001 as their epoch)
days d = date::today() - epoch;

是否需要mktime()函数?这取决于你在做什么,你可能想考虑自己的解决方案。如果我要这样做,我会先写一个程序,计算从年初开始的天数。如果你在这方面有困难,请再备份一步,编写一个程序,计算从月初开始的天数。(请注意,我建议简化问题。找到一个小问题总是一个好主意,你可以很容易地解决,并有助于解决更大的问题。@Code Guru,不,mktime不是required@Breakdown请看我在上面编辑的评论,其中给出了一些提示。日期和时间是不同的。一天不仅仅是24小时,它是最重要的一个日期和下一个日期之间的差异,包括闰秒、夏令时调整等。Howard Hinnant的库的更高版本将进入C++20。
date epoch = year(1970)/jan/day(1); // Assuming you're referring to the traditional Unix epoch (some systems such as Cocoa on OS X use the first day of the millenium, Jan 1, 2001 as their epoch)
days d = date::today() - epoch;