0
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;
}

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

4

5 回答 5

6

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

TimeSpan time = TimeSpan.FromMilliseconds(milliSec);
DateTime v = new DateTime(time.Ticks); //This is the result

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

TimeSpan time = TimeSpan.FromMilliseconds(milliSec);
DateTime result = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
result = result.Add(time);

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

于 2012-10-12T09:43:08.710 回答
3
private static DateTime FromMS(long microSec)
{
    long milliSec = (long)(microSec / 1000);
    DateTime startTime = new DateTime(1970, 1, 1);

    TimeSpan time = TimeSpan.FromMilliseconds(milliSec);
    return startTime.Add(time);
}
于 2012-10-12T09:35:20.563 回答
1

我使用此方法将 Unix Epoch(以毫秒为单位)转换为 DateTime 对象

private static readonly DateTime UnixEpochStart = 
               DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc);


public static DateTime ToDateTimeFromEpoch(this long epochTime)
{
   DateTime result = UnixEpochStart.AddMilliseconds(epochTime);
   return result;
}
于 2012-10-12T09:37:59.203 回答
0
long ticks = new DateTime(1970, 1, 1).Ticks;
DateTime dt = new DateTime(ticks);
dt.AddMilliseconds(milliSec);
于 2012-10-12T09:38:03.403 回答
-1

尝试这个。

TimeSpan time = TimeSpan.FromMilliseconds(1509359657633);
DateTime date = new DateTime(1970, 1, 1).AddTicks(time.Ticks);

这会将毫秒转换为正确的日期时间。

注意:-如果您从 JS 获得毫秒,例如Date.now()您在此处收到的毫秒是 UTC 的。因此,当您转换为 C# DateTime 时,您将获得 UTC 时间的 DateTime

于 2017-10-30T10:42:40.510 回答