根据Microsoft文档,该FILETIME结构从1601年1月1日开始计算(可能是当天的开始),但是这包括闰秒吗?
我正在创建一个模拟对象来测试我的应用程序,以便它在边界条件下工作.我FILETIME在Windows SDK中使用.
该链接显示这是1601年1月1日(我假设午夜00:00:00两者的最早时间dwLowDateTime和dwHighDateTime有0x00000000),所以我有.什么是最新的FILETIME?
我的第一直觉是设置dwLowDateTime并dwHighDateTime到0xFFFFFFFF,后来我质疑,如果这确实是一个有效的时间,我需要测试,因为在我的链接页面说,SetFileTime函数使用0xFFFFFFFF指定文件的以前的读取时间应予以保留.
使用以下方法进行转换时,我阅读的大多数文件都是合适的时间:
// works great most of the time
private static DateTime convertToDateTime(System.Runtime.InteropServices.ComTypes.FILETIME time)
{
long highBits = time.dwHighDateTime;
highBits = highBits << 32;
return DateTime.FromFileTimeUtc(highBits + time.dwLowDateTime);
}
Run Code Online (Sandbox Code Playgroud)
这里我在visual studio中有一个例子来说明这个方法有时不起作用,例如我将在我的计算机和调试中显示实际文件.所以恰好在我的调试中的文件是:
"A:\ Users\Tono\Documents\Visual Studio 2010\Projects\WpfApplication4\WpfApplication4\obj\x86\Debug\App.g.cs"

这里是我试图转换为DateTime的FILETIME"我需要LastWriteTime"

在这里你可以看到dwHighDateTime = 30136437以及该文件中的dwLowDateTime = -2138979250.
当我运行我的方法加上其他技术时,我得到以下日期:

所以到目前为止,一切似乎都很有效.但是为什么当我在Windows中浏览并查找特定文件时,我会得到一个不同的日期!这是我在查看文件属性时得到的日期:

为什么日期不匹配?我究竟做错了什么?
我正在使用Visual Studio 2005在C++中创建一个程序,它需要在一组图像上创建带有时间的水印.
这些图像来自以特定时间间隔处理的视频.我想要做的是通过SYSTEMTIME修改每个图像的时间.我查看了MSDN,它说不修改SYSTEMTIME本身的值,而是将其转换为FILETIME,然后转换为ULARGE_INTEGER.我的问题是ULARGE_INTEGER是如何拆分的?HighPart是日期,Low Part是时间,如果是这样,我如何考虑翻转?比如图像出现在2011年2月25日晚上11:58并持续到2011年2月26日12:11?只是添加指定的值会被自动考虑并在我将其转换回SYSTEMTIME变量时显示吗?
在此先感谢您的帮助.
我想获得远程文件的最后修改时间.我正在使用我在stackoverflow上找到的代码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);
//don't fetch the actual page, you only want headers
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_HEADER, true);
//stop it from outputting stuff to stdout
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// attempt to retrieve the modification date
curl_setopt($curl, CURLOPT_FILETIME, true);
$result = curl_exec($curl);
echo $result;
$info = curl_getinfo($curl);
print_r($info);
if ($info['filetime'] != -1) { //otherwise unknown
echo date("Y-m-d H:i:s", $info['filetime']); //etc
}
Run Code Online (Sandbox Code Playgroud)
这段代码的问题我一直在获得filetime = -1.但是当我删除
curl_setopt($curl, CURLOPT_NOBODY, true);
Run Code Online (Sandbox Code Playgroud)
然后我得到正确的修改时间.
是否有可能获得最后修改时间但是
curl_setopt($curl, CURLOPT_NOBODY, true);
Run Code Online (Sandbox Code Playgroud)
包含在脚本中.我只需要页面的标题,而不是正文.
提前致谢
这既是一个挑战,也是一个问题:
我有一个数据文件夹.我想要以下信息列表列表:
Filename: Created: Last modified:
Information =
[
[datafile1, Mon Mar 04 10:45:24 2013, Tue Mar 05 12:05:09 2013],
[datafile2, Mon Mar 04 11:23:02 2013, Tue Apr 09 10:57:55 2013],
[datafile2.1, Mon Mar 04 11:37:21 2013, Tue Apr 02 15:35:58 2013],
[datafile3, Mon Mar 04 15:36:13 2013, Thu Apr 18 15:03:25 2013],
[datafile4, Mon Mar 11 09:20:08 2013, Mon May 13 16:30:59 2013]
]
Run Code Online (Sandbox Code Playgroud)
我有信息后可以自己分类.有人可以写这个功能:
def get_information(directory):
.
.
.
return Information
Run Code Online (Sandbox Code Playgroud)
这些帖子很有用:
2) 按日期排序文件
在搜索了interwebs之后,我设法创建了一个C#类来获取FileTimeUTC Hex String.
public class HexHelper
{
public static string GetUTCFileTimeAsHexString()
{
string sHEX = "";
long ftLong = DateTime.Now.ToFileTimeUtc();
int ftHigh = (int)(ftLong >> 32);
int ftLow = (int)ftLong;
sHEX = ftHigh.ToString("X") + ":" + ftLow.ToString("X");
return sHEX;
}
}
Run Code Online (Sandbox Code Playgroud)
对于PowerShell,我尝试使用相同的代码:
$HH = @"
public class HexHelper
{
public static string GetUTCFileTimeAsHexString()
{
string sHEX = "";
long ftLong = DateTime.Now.ToFileTimeUtc();
int ftHigh = (int)(ftLong >> 32);
int ftLow = (int)ftLong;
sHEX = ftHigh.ToString("X") + ":" + ftLow.ToString("X");
return …Run Code Online (Sandbox Code Playgroud) 有什么链接可以让我使用 python 将日期时间转换为文件时间吗?
示例:2011 年 4 月 13 日 07:21:01.0874 (UTC) FILETIME=[57D8C920:01CBF9AB]
从电子邮件标题中获取上述内容。
如何将 FILETIME 转换为秒?我需要比较两个 FILETIME 对象..
我找到了这个,但似乎它没有用......
ULARGE_INTEGER ull;
ull.LowPart = lastWriteTimeLow1;
ull.HighPart = lastWriteTimeHigh1;
time_t lastModified = ull.QuadPart / 10000000ULL - 11644473600ULL;
ULARGE_INTEGER xxx;
xxx.LowPart = currentTimeLow1;
xxx.HighPart = currentTimeHigh1;
time_t current = xxx.QuadPart / 10000000ULL - 11644473600ULL;
unsigned long SecondsInterval = current - lastModified;
if (SecondsInterval > RequiredSecondsFromNow)
return true;
return false;
Run Code Online (Sandbox Code Playgroud)
我比较了 2 FILETIME 和 10 秒的预期差异,它给了我 ~7000 ......这是提取秒数的好方法吗?
我正在寻找一种将 WindowsFILETIME结构转换为 a 的方法std::chrono::time_point< std::chrono::file_clock>,以便我可以建立两个文件时间之间的差异并在std::chrono::microseconds.
filetime ×10
windows ×5
c++ ×4
datetime ×4
c# ×2
python ×2
c++-chrono ×1
c++20 ×1
comparison ×1
curl ×1
directory ×1
hex ×1
leap-second ×1
php ×1
powershell ×1
string ×1
systemtime ×1
utc ×1