C++ 文件名中时间戳中的秒值有时会舍入
对于一个任务,为了唯一性,我必须创建文件名中附有时间戳的文件。还有另一个程序可以读取这些文件。另一个程序拾取这些文件的条件是,文件名应该包含14位时间戳(YYYYMMDDHHMMSS),这是我通过SYSTEMTIME获得的。我面临的问题是,有时秒字段在文件名中显示为“10”,而在时间戳中只有“1”显示为秒字段。另一个程序没有选择这个文件,因为时间戳现在只包含13位数字。除了检查时间戳的长度并在最后添加“0”之外,我如何通过任何方法解决此问题 谢谢C++ 文件名中时间戳中的秒值有时会舍入,c++,timestamp,filenames,C++,Timestamp,Filenames,对于一个任务,为了唯一性,我必须创建文件名中附有时间戳的文件。还有另一个程序可以读取这些文件。另一个程序拾取这些文件的条件是,文件名应该包含14位时间戳(YYYYMMDDHHMMSS),这是我通过SYSTEMTIME获得的。我面临的问题是,有时秒字段在文件名中显示为“10”,而在时间戳中只有“1”显示为秒字段。另一个程序没有选择这个文件,因为时间戳现在只包含13位数字。除了检查时间戳的长度并在最后添加“0”之外,我如何通过任何方法解决此问题 谢谢 Mahboob附加一些示例代码更适合描述 我使用
Mahboob附加一些示例代码更适合描述 我使用的代码如下,并没有遇到你们面临的问题
int64 timestamp = time(NULL);
char data[kFileNameLength + 1];
tm time_struct;
strftime(data, sizeof(data), "%Y%m%d%H%M%S", localtime_r(×tamp, &time_struct));
return std::string(data);
您是如何生成时间戳的?确保在系统将其计算为某个值之前将其转换为字符串,并舍入最后的0。我正在尝试使用命令SYSTEMTIME timer将毫秒添加到时间戳中;字毫秒=计时器.wmill秒;它返回3位数字。但是如果最后一个数字是0,它将其四舍五入并返回2个数字。我使用的是标准的C内置函数。你试过了?是的。我试过了。也许我不能完全清楚地表达我的问题。实际上,当我把我的问题和我先前的评论结合起来时,我的问题就出现了。我正在使用具有类似参数的strftime()函数,但当我使用WORD并添加毫秒时,我会遇到这个问题。这个链接有助于我理解我需要做什么。[链接]()