问题:
我有很多代码在很多地方都采用本地时间,并使用函数 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/