0

我有一个输入 .txt 文件,其中包含一个日期。日期格式为 DDMONYY,如 08JUN98 或 16NOV05。我需要将此日期与文件的创建日期进行比较,看看哪个更早。

FILETIME 似乎是合适的形式,特别是因为有一个 CompareFileTime 函数。但是,我在将日期转换为文件时间时遇到问题。

我可以从文件中提取日期并将其转换为数字(第 1-31 天、第 1-12 个月、1900-20 年等等),所以我不需要帮助,但无论如何都可以评论它。

真正的问题是我无法弄清楚如何将这些值转换为 FILETIME 格式。现在,我将它们作为三个不同的字符串(或 int's,如果这有助于更多)一个用于日、月和年。如果你能帮助我从字符串跳转到 FILETIME,那就太好了。

或者,如果我在研究过程中错过了一种完全更好的方法,请随时提出建议。

如果你愿意,我可以发布我所拥有的,但我认为它不会有帮助,因为它只会到达字符串/整数。


如果它更清楚,我在我的变量中的值,对于 2002 年 5 月 3 日,将类似于

string day = "03";
string month ="5";
string year = "2002;
int dayint = 3;
int monthint = 5;
int yearint = 2002;

我需要一种将其转换为 FILETIME 的方法

谢谢一堆。


编辑:

我不确定如何填充SYSTEMTIME结构,甚至不确定如何针对不同的时间系统进行填充。所以我想这更多是我的问题。

我还应该提到我只需要天数的准确性。小时和任何更小的东西都不是我真正关心的。


编辑2:

我一定没有尝试给出SYSTEMTIMEint 值,因为这似乎有效。但是,当我尝试将该系统时间转换为文件时间时,我遇到了问题。它指出“错误:不存在从“SYSTEMTIME”到“const SYSTEMTIME *”的合适转换”。我不确定如何解决这个问题,因为如果我定义 systime 变量,因为const SYSTEMTIME我无法为其赋值。

这是相关代码,如果有帮助

SYSTEMTIME systime;
LPFILETIME ftime1;
LPFILETIME ftime2;
int dayint=6;
int monthint=12;
int yearint=1989;

systime.wDay = dayint;
systime.wMonth = monthint;
//and so on for year, hour, etc. 
SystemTimeToFileTime(systime,ftime1);     //This is where the aforementioned error occurs
GetFileTime(filename, NULL, NULL, ftime2);   //I'm also not sure about this line... feel free to critique it. I'm only interested in the last written time so I put NULL for the other times... When I check the values for this (in SYSTEMTIME) it only returns 52428, so I don't think this line is working correctly...
CompareFileTime(ftime1,ftime2);

当然,日、月、年的值并没有硬编码在实际代码中。


编辑3:

我手头不好......

我会尝试解决这个问题....感谢您的帮助 Ben Voigt 如果我不能得到它,我想我会回来的

4

1 回答 1

4

您可以填写一个SYSTEMTIME结构,然后调用SystemTimeToFileTime

您可能想在LocalFileTimeToFileTime之后使用,具体取决于您是要指定 UTC 时间还是本地时间。

于 2012-07-18T01:25:36.100 回答