【问题标题】:seconds value in timestamp in filename gettin rounded off sometimes文件名中时间戳中的秒值有时会四舍五入
【发布时间】:2013-05-16 04:12:03
【问题描述】:

对于一项任务,为了唯一性,我必须创建带有时间戳附加在文件名中的文件。还有另一个程序可以读取这些文件。其他程序选择这些文件的条件是文件名应包含 14 位时间戳 (YYYYMMDDHHMMSS),我通过 SYSTEMTIME 获得。我面临的问题是,有时秒字段以例如“10”的形式出现,在文件名中它被四舍五入,并且只有“1”显示为时间戳中的秒字段。另一个程序没有选择这个文件,因为时间戳现在只包含 13 位数字。除了检查时间戳的长度并在最后添加“0”之外,我该如何解决这个问题。

谢谢 大叔

【问题讨论】:

  • 您是如何生成时间戳的?确保在系统评估它之前将其转换为字符串并舍入最后一个 0

标签: c++ timestamp filenames


【解决方案1】:

附上一些示例代码更好描述。

我使用了如下代码,没有遇到你遇到的问题。

  int64 timestamp = time(NULL);
  char data[kFileNameLength + 1]; 
  tm time_struct;
  strftime(data, sizeof(data), "%Y%m%d%H%M%S", localtime_r(&timestamp, &time_struct));
  return std::string(data);

【讨论】:

  • 我正在尝试使用命令 SYSTEMTIME timer 为时间戳添加毫秒; WORD 毫秒 = timer.wMilliseconds;它返回 3 位数字。但如果最后一位为 0,则将其四舍五入并仅返回 2 位
  • 我使用的是标准的 C 内置函数。你试过了吗?
  • 是的。我试了一下。也许我无法完全表达我的问题。实际上,当我将我的问题和我之前的评论结合起来时,我的问题就出现了。我正在使用具有类似参数的 strftime() 函数,但是当我使用 WORD 并添加毫秒时,我遇到了这个问题
  • 这个链接有点帮助我理解我需要做什么。 [链接] (codeproject.com/Articles/17576/…)
猜你喜欢
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2017-12-26
  • 2018-06-03
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 2015-02-04
相关资源
最近更新 更多