Datetime 标识日期时间格式约定

Datetime 标识日期时间格式约定,datetime,string-formatting,reverse-engineering,identification,Datetime,String Formatting,Reverse Engineering,Identification,我正在开发一个程序(我们称之为后处理器),它对另一个封闭源代码程序(我们称之为原始程序)的输出应用一些后处理。后处理的一部分涉及重新计算日期时间值,并以与原始程序相同的格式输出 例如,原始可以输出: 03 : 15 : 30 [h:min:s] 后处理器计算实际时间应为4小时20分钟10秒,并应输出: 04 : 20 : 10 [h:min:s] “好”的一面是,尽管大部分是一个黑匣子,Original程序有一些配置设置。在这些设置的深处是一个字符串值TimeOutputFormat,它是后

我正在开发一个程序(我们称之为
后处理器
),它对另一个封闭源代码程序(我们称之为
原始
程序)的输出应用一些后处理。后处理的一部分涉及重新计算日期时间值,并以与原始程序相同的格式输出

例如,
原始
可以输出:

03 : 15 : 30 [h:min:s]
后处理器计算实际时间应为4小时20分钟10秒,并应输出:

04 : 20 : 10 [h:min:s]
“好”的一面是,尽管大部分是一个黑匣子,
Original
程序有一些配置设置。在这些设置的深处是一个字符串值
TimeOutputFormat
,它是
后处理器
可以读取的

在上述示例中,
TimeOutputFormat
字符串为:

%#H : %M : %S [h:min:s]
我遇到的另一个有效格式字符串是:

%q2 min
将总分钟数输出到小数点后2位


通过摆弄,我还发现了
%c
格式字符串,它以以下形式输出:

1/1/1970 03:15:30 AM
这确认了
原始程序将这些日期时间值存储在某种形式的Unix时间对象中

我想知道的是使用什么格式化系统,所以我可以在我的代码>后置处理器< /C>中实现它。我希望它是一个有点标准的格式,因为我没有任何文档。黑盒<代码>原始< /C>程序使用Visual C++、.NET和Python模块的混合。(可能还有我不知道的其他技术)

这是我到目前为止发现的东西的目录

  • 字母前的
    (即
    %\d
    )用前导0填充值
  • #
    删除值
    %d->01但%d->1的填充
  • 字母后面的数字(即,`%d3')显示十进制数字(如果该值有)
已知格式字符串(来自试用/错误)


如果有人能识别这个格式化系统,我将不胜感激。我将继续对它进行编目以供我自己使用,但如果它碰巧是一个公开可用的(并且希望有良好的文档记录)文档,那么最好有一些原始文档系统。

与C或Python中的
strftime
类似,但您描述了一些有趣的差异。问题:1)您是在使用经过的时间还是一天中的时间?例如,25:00:00是有效输入吗?2)对于
%q2 min
“输出总分钟”是什么意思。您的意思是它将其视为经过的时间并返回
hours*60+分+秒/60
?另外,您确定
%\d
填充一个前导零吗?或者可能是因为它移除了它?换句话说,is
%d
“02”和
%d
只是“2”?@MattJohnson 1)“有效输入”很难定义。
Original
程序处理一些数据并输出一个结果文件,其中包含一个时间跨度的字符串表示形式。
后处理器
处理相同的数据,并用计算的时间跨度覆盖输出文件。在这方面,“25:00:00”可能在
原始程序内部出现。根据对格式字符串的修改,我可以推断内部表示是日期,但用法是时间span@MattJohnson
%q2
的行为与您描述的一样(
小时*60+分钟+秒/60
)。关于
%#d
,我只测试了
%#H
上的
%#d
行为,并从中推断出,
%#H
用0填充,而
%#d
删除0。奇怪的是,它们会是不同的行为。我在想也许它用过——但那会排除这种可能性。而且
%q
也不存在。六羟甲基三聚氰胺六甲醚。。。
%H - Hour component (not total hours, just the hour component)
%M - Minute component
%S - Second component
%a - Day of week (three letter abbrev.)
%b - Month (three letter abbrev.)
%c - Full date (m/d/yyyy HH:MM AM/PM)
%d - Not sure (outputs "01") (guessing day?)
%e-i Not defined
%j - Not sure (outputs "001") (guessing day out of 365?)
%k-l Not defined
%m - Not sure (outputs "01") (guessing month?)
%q - Total minutes
%p - AM/PM