我有一个输入 .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:
我一定没有尝试给出SYSTEMTIME
int 值,因为这似乎有效。但是,当我尝试将该系统时间转换为文件时间时,我遇到了问题。它指出“错误:不存在从“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 如果我不能得到它,我想我会回来的