java - 文件时间到字符串

标签 java c# windows filetime

我正在读取一些存储为 long 的 Microsoft FileTime 值,并且我正在尝试将其转换为人类可读的日期。

例如,值 131733712713359180 转换为:Wednesday, June 13, 2018 1:47:51pm。这是使用在线工具完成的,此处:Online time convertor

我在 Java 中运行良好,但当我尝试在 C# 中运行时,我得到了错误的年份。我得到的输出是:13/06/0418 13:47:51

我用来进行转换的代码是:

public string CalculateTimestamp(Int64 epoch)
{
    DateTime date = DateTime.Now;

    try
    {
        date = new DateTime(epoch);
        DateTime filetime = new DateTime(date.ToFileTime());
        result = filetime.ToString();
    }
    catch (Exception uhoh)
    {
        result = "failedtoparsetimestamp";
    }

    return result;
}

在 Java 中进行转换时,这是我使用的代码。

public String calculateTimeStamp(long epoch) {

    if (epoch == 0) {
        return "--";
    }

    long unixDifference = 11644473600000L;

    long timeStamp = (epoch / (10 * 1000)) - unixDifference;

    Date date = new Date(timeStamp);

    return date.toString();
}

我猜C#转换应该更直接,但我想不通为什么年份不对。我已经尝试了 UInt64Int64,两者都给出了相同(错误)的结果。

如有任何建议,我们将不胜感激。

谢谢

最佳答案

这是 DateTime 的内置功能,因此无需进行任何调整:

var date = DateTime.FromFileTimeUtc(131733712713359180);

返回 2018-06-13 13:47:51

关于java - 文件时间到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52040996/

相关文章:

java - 在Perl中,有没有类似Spring的初始化框架?

C# - 静态类型不能用作类型参数

c# - System.IO.FileNotFoundException : Could not load file or assembly 'System.Net.Security,版本=4.0.0.0

c# - 设置TabControl的背景颜色

windows - 当您按下 "Windows+D"时 Windows 将发送什么消息

java - 如何收集已更新的对象的所有属性?

Java:CaptureDeviceManager#getDeviceList() 为空?

java - 如何将 Nmap 和 Wireshark 与应用程序捆绑在一起?

javascript - vs代码侧边栏树文件夹结构不起作用

java - 确保 Entity 有一个非私有(private)的构造函数