我有一个输入.txt文件,其中包含一个日期。日期格式为DDMONYY,如08年8月9日或16日的05年。我需要比较这个日期和文件的创建日期,并且看哪个更早。将字符串中的日期转换为FILETIME
FILETIME看起来是合适的形式,尤其是因为有一个CompareFileTime函数。但是,我有问题将日期转换为文件时间。
我可以从文件中提取日期并将其转换为数字(第1-31天,第1-12天,第1900-20天),所以我不需要帮助,但可随时对其进行评论无论如何。
真正的问题是我无法弄清楚如何将这些值转换为FILETIME格式。现在我有三个不同的字符串(或int,如果这有助于更多)一个日,月和年。如果你能帮助我从字符串跳转到FILETIME,那会很棒。或者,如果我在研究期间错过了一个完全更好的方法,请随时提出建议。
如果你愿意,我可以发布我有的,但我不认为它会帮助,因为它只是得到字符串/ int的。
如果它使任何更清晰,数值我在这一点上有我的变量,2002年5月3日,将沿
string day = "03";
string month ="5";
string year = "2002;
int dayint = 3;
int monthint = 5;
int yearint = 2002;
线的东西,我需要一种方法将其转换为FILETIME
非常感谢。
编辑:
我不知道我怎么会填补SYSTEMTIME
结构,甚至是如何做到这一点的不同的时间系统。所以我想这更多是我的问题。
我应该也提到我只需要几天的准确性。小时和更小的东西都不是我真正关心的。
EDIT2:
我不能试图给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);
当然,对于日,月,年值在实际代码中不硬编码。
EDIT3:
我有一个坏的手柄....
我要去尝试解决这个问题.... 感谢您的帮助本·福格特 如果我不能得到它,我想我一定会回来的
如果你不知道如何在一个结构中分配变量,让自己一本好的C++书:http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – 2012-07-18 03:45:38
你几乎在那里,但这些函数需要'SYSTEMTIME'或'FILETIME'结构的地址,所以说'SystemTimeToFileTime(&systime,&ftime1)'等等('&'操作符获取变量的地址。地址被称为指针。)您还需要设置'SYSTEMTIME'的其他字段,例如小时,分钟和秒。如果你不在乎,你可以使用午夜。你应该检查这些函数的返回值,以确保它们成功。 – 2012-07-18 12:46:44
谢谢,这正是我需要的。我错过了时代的前沿。所以如果我理解正确,SystemTimeToFileTime函数需要变量的地址,而不是实际的变量? 此外,我现在有问题使用'GetFileTime'。它实际上不会返回'FILETIME',它只是给我每个字段的值52428。 我正在使用下面的'GetFileTime(filename,NULL,NULL,&ftime2);'那里有什么问题吗? – user1533323 2012-07-18 13:28:39