如何在c#中将毫秒转换为DateTime

Ger*_*sik 0 c#

private static DateTime FromMS(long microSec)
{           
    long milliSec = (long)(microSec / 1000);
    DateTime startTime = new DateTime(1970, 1, 1);

    TimeSpan time = TimeSpan.FromMilliseconds(milliSec);
    DateTime v = new DateTime(time.Ticks);

    DateTime result = new DateTime(startTime.Year + v.Year, startTime.Month +            v.Month, startTime.Day + v.Day, startTime.Hour + v.Hour, startTime.Minute + v.Minute, startTime.Millisecond + v.Millisecond);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

这个结果是错误的……为什么???

Sha*_*han 5

执行以下操作时,您已经获得了转换为毫秒的结果:

TimeSpan time = TimeSpan.FromMilliseconds(milliSec);
DateTime v = new DateTime(time.Ticks); //This is the result
Run Code Online (Sandbox Code Playgroud)

如果您想将毫秒添加到 UNIX 时间,那么您所要做的就是:

TimeSpan time = TimeSpan.FromMilliseconds(milliSec);
DateTime result = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
result.Add(time);
Run Code Online (Sandbox Code Playgroud)

如果时间不是 UTC,则省略 DateTimeKind.Utc 部分,但通常最好将时间保持在 UTC 并且仅在需要时转换为本地时间。