我正在编写一个快速实用程序来转储结构的一些细节,stat
但遇到了一个问题,因为时间属性stat
似乎是timestruc_t
在我的平台上似乎是两个 64 位整数的类型。
struct stat statBuf;
return_code = stat( aFileName, &statBuf );
if ( !return_code )
{
struct tm res;
localtime_r( statBuf.st_mtim.tv_sec, &res ); // problem!
我想我也许可以localtime_r
用来将 seconds 属性转换为 astruct tm
但我似乎在使用statBuf.st_mtim.tv_sec
第一个参数时遇到了强制转换问题。
我敢肯定这不是最好的解决方案——也许你知道一个更好的解决方案。我只想将日期和时间——如果可能的话,降到亚秒级——以格式YYYY-MM-DD HH.MM.SS.SSS
或类似格式的字符串形式输出。任何建议都会非常受欢迎。
更新
这是一个简单的问题——我的错误。只是忘记了第一个参数需要是地址而int
不是int
值。所以修改和部分完成的代码如下所示:
localtime_r( &statBuf.st_mtim.tv_sec, &res );
const int bufLen=24;
char buffer[ bufLen + 1];
strftime( buffer, bufLen, "%Y-%m-%d %H:%M:%S", &res );
printf(" %s, %s\n", aFileName, buffer);