C# - DateTime.FromFileTimeUtc 到 DateTime.FromFileTime

标签 c# .net datetime timezone utc

问题:

我有很多代码在很多地方都采用本地时间,并使用函数 DateTime.FromFileTime

现在,我们的一些数据服务已经切换到UTC时间了,想知道有没有办法把UTC时间转换成本地时间?

在这两种情况下,我只有一个 long,即 windows 文件时间。如果我使用 FromFileTimeUtc 函数,我输出的值是准确的,如果我不使用,那么它就是错误的。

我不想将所有显示 FromFileTime 的代码更改为 FromFileTimeUtc。相反,我有一个转换层,我将在其中进行此转换。

有什么想法吗?

最佳答案

var utcDateTime = DateTime.UtcNow;
var localDateTime = TimeZone.CurrentTimeZone.ToLocalTime(utcDateTime);

[编辑] 回答您的评论:“希望更改传递给 DateTime.FromFileTimeUtc 的 long 值 .. 这样它在传递给 DateTime.FromFileTime 时给出相同的值”

private static long ConvertFileTimeToLocalTime(long fileTime)
{
    return fileTime + ((long)TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMilliseconds * 10000);
}

测试:

var fileTime = DateTime.Now.ToFileTime();

var wrongTime = DateTime.FromFileTimeUtc(fileTime);

var correctTime = DateTime.FromFileTimeUtc(ConvertFileTimeToLocalTime(fileTime));

关于C# - DateTime.FromFileTimeUtc 到 DateTime.FromFileTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400933/

相关文章:

.net - 在 Python 中动态编写 PowerShell CmdLets

scala - 如何在scala中获取没有时间的当前日期

python - 如何处理重复事件中的 DST 和 TZ?

c# - 用户登录后登录 View 未更新?

c# - 无法获得 S.M.A.R.T.外部驱动器的信息

c# - 字符串数组也有类似 SubString 或 Split 函数的东西吗?

c# - WPF - 在一段时间内检测鼠标按下

c# - XmlReader 不考虑文档类型符号

c# - Json.NET - 将多个对象属性自定义反序列化为单一类型列表?

datetime - sas:无法找出 INTCK 函数错误