c# - 如何在C#中获取 'Date'文件属性

标签 c# windows-10

我有一些图片,创建日期设置为我解压它们的时间,修改日期设置为过去某个奇怪的时刻。但是,“日期”属性显示了一个正确的创建时间(我实际拍摄这些照片的时间)。有没有办法在 C# 中访问该属性? File.GetCreationTimeFileInfo.CreationTime 都给我错误的“创建日期”。 enter image description here

这是我尝试过的:

var allFiles = Directory.EnumerateFiles(".");
foreach (var s in allFiles)
{
    Console.WriteLine(s + " " + File.GetCreationTime(s));
}

DirectoryInfo dir = new DirectoryInfo(".");
FileInfo[] files = dir.GetFiles().OrderByDescending(p => p.CreationTime).ToArray();

foreach (var f in files)
{
    Console.WriteLine(f.Name + " " + f.CreationTime + "/" + f.LastAccessTime + "/" + f.LastWriteTime);
}

编辑:

这个“日期”实际上是一个“拍摄日期”字段,它不是文件属性,而是图像文件元数据的一部分。

最佳答案

试试这个:

public DateTime? GetDateTakenFromBitmap(string bitmapFileName)
{
    using (var bm = System.Drawing.Bitmap.FromFile(bitmapFileName))
    {
        return
            bm
                .PropertyItems
                .Where(x => x.Id == 0x9003)
                .Select(x =>
                {
                    DateTime dt;
                    var enc = new ASCIIEncoding();
                    var parsed = DateTime.TryParseExact(
                        enc.GetString(x.Value, 0, x.Len - 1),
                        "yyyy:MM:dd HH:mm:ss",
                        CultureInfo.CurrentCulture,
                        DateTimeStyles.None,
                        out dt);
                    return parsed ? (DateTime?)dt : null;
                })
                .FirstOrDefault();
    }
}

关于c# - 如何在C#中获取 'Date'文件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42335663/

相关文章:

c# - 检索 Windows 版本 "1511"

python - Matplotlib Savefig 不会覆盖旧文件

c# - 组合框的复合 DisplayMemberPath

c# - 同一应用程序中的多个静态变量范围?

C# 动态 Linq 三元运算符

c# - 如何在 UWP (Windows 10) 中更改所选 ListView 项目的突出显示颜色

c# - 用于 ASP.Net GridView 的 ASP.Net PagingBulletedList 扩展器

c# - 新授权模型中的复杂条件 (AND/OR) - ASP.NET Core?

windows - 如何在 Powershell 上禁用个人和系统配置文件加载时间消息

java - 使用 jar 在 Windows 调度程序中运行批处理脚本