簡體   English   中英

如何在c#中將毫秒轉換為DateTime

[英]how to convert from millisecond to DateTime in 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;
}

這個結果是錯誤的……為什么???

執行以下操作時,您已經獲得了轉換為毫秒的結果:

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.Add(time);

如果時間不是 UTC,則省略 DateTimeKind.Utc 部分,但通常最好將時間保持在 UTC 並且僅在需要時轉換為本地時間。

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

我使用此方法將 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;
}
long ticks = new DateTime(1970, 1, 1).Ticks;
DateTime dt = new DateTime(ticks);
dt.AddMilliseconds(milliSec);

嘗試這個。

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

這會將毫秒轉換為正確的日期時間。

注意:-如果您從 JS 獲得毫秒,例如Date.now()則您在此處收到的毫秒是 UTC。 因此,當您轉換為 C# DateTime 時,您將獲得 UTC 時間的 DateTime

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM