将字符串中的日期转换为FILETIME
Convert a date in a string to FILETIME
我有一个imput.txt文件,其中包含一个日期。日期的格式为DDMONYY,如1998年6月8日或2005年11月16日。我需要将此日期与文件的创建日期进行比较,看看哪个日期更快。
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
结构,甚至不确定如何为不同的时间系统填充。所以我想这更多的是我的问题。
我还应该提到,我只需要准确的天数。小时和任何较小的事情对我来说都不重要。
第2版:
我一定没有尝试给SYSTEMTIME
提供int值,因为这似乎有效。然而,当我试图将系统时间转换为文件时间时,我遇到了问题。它表示"错误:不存在从"SYSTEMTIME"到"const SYSTEMTIME*"的合适转换"。我不知道如何解决这个问题,因为如果我将系统时间变量定义为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如果我拿不到,我想我会回到
您可以填写SYSTEMTIME
结构,然后调用SystemTimeToFileTime
之后您可能需要使用LocalFileTimeToFileTime
,具体取决于您是要以UTC还是当地时间指定小时数。
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 将字符串中的日期转换为FILETIME
- 将FILETIME转换为便携式时间单位
- 在 Unix/Linux 中将 Windows Filetime 转换为秒