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エポック(ミリ秒単位)から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 に答える