Gur*_*lam 6 .net c# timezone datetime utc
问题:
我有很多代码,在许多地方假设当地时间,并使用该功能DateTime.FromFileTime.
现在,我们的一些数据服务已经切换到UTC时间,我想知道是否有办法将UTC时间转换为本地时间?
在这两种情况下,我所有的都是长的,这是Windows文件的时间.如果我使用该FromFileTimeUtc函数,我输出的值是准确的,如果我没有那么它是错误的.
我不想改变我的所有代码,它说FromFileTime要FromFileTimeUtc.相反,我有一个转换层,我将进行此转换.
有任何想法吗?
var utcDateTime = DateTime.UtcNow;
var localDateTime = TimeZone.CurrentTimeZone.ToLocalTime(utcDateTime);
Run Code Online (Sandbox Code Playgroud)
[编辑]回答您的评论:“希望更改传递给 DateTime.FromFileTimeUtc 的长值..,以便在传递给 DateTime.FromFileTime 时给出相同的值”
private static long ConvertFileTimeToLocalTime(long fileTime)
{
return fileTime + ((long)TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMilliseconds * 10000);
}
Run Code Online (Sandbox Code Playgroud)
测试:
var fileTime = DateTime.Now.ToFileTime();
var wrongTime = DateTime.FromFileTimeUtc(fileTime);
var correctTime = DateTime.FromFileTimeUtc(ConvertFileTimeToLocalTime(fileTime));
Run Code Online (Sandbox Code Playgroud)