我有一个充满数据的文件,其中一列是从大纪元算起的秒数。作为引用,示例值如下所示:
1498493536984926976
我需要将其转换为一年中的某一天。到目前为止我所拥有的是这段代码,它使用 this reference将日期转换为正常的可读结构,然后 strftime 从结构中提取一年中的某一天:
time_t rawtime = stol(exploded_line[2]);
std::cout << rawtime << std::endl;
struct tm date;
date = *localtime( &rawtime );
char *buffer;
std::cout << 2 << std::endl;
strftime (buffer,sizeof(buffer),"%j",&date);
但是,strftime
行上的这段代码SegFaults
!我不知道是什么原因造成的。我尝试将 buffer
初始化为
char buffer[80];
和各种其他声明,但似乎没有任何效果。我也试过完全放弃缓冲区,只使用 std::string
;那也没有用。
此外,我并不偏爱这种方法。如果其他人有更好的方法从 Epoch 时间获取一年中的某一天,我将完全实现它。
任何帮助将不胜感激!
最佳答案
这些行是你的问题:
char *buffer;
strftime (buffer,sizeof(buffer),"%j",&date);
您已经分配了一个 char *
但它没有指向任何东西。它只是一个随机值,因此您将一个野指针传递给 strftime()
。此外,sizeof(buffer)
将是指针的大小(4 或 8 个字节,具体取决于您的体系结构),而不是缓冲区应该指向的数组的大小。
将 char * buffer
更改为 char buffer[32];
或类似的东西。
关于c++ - 将时间(以秒为单位)从大纪元转换为一年中的某一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44956621/