[c#] C #에서 Java System.currentTimeMillis ()에 해당

System.currentTimeMillis()C #에서 Java와 동등한 것은 무엇입니까 ?



답변

대안:

private static readonly DateTime Jan1st1970 = new DateTime
    (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

public static long CurrentTimeMillis()
{
    return (long) (DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
}


답변

자바의 일반적인 관용구는 currentTimeMillis()1970 년 이후의 실제 밀리 초에 관심이없는 타이밍 또는 스케줄링 목적으로 를 사용하는 것 입니다. 대신에 상대적인 값을 계산하고 나중에 해당 값과 비교 currentTimeMillis()합니다.

그것이 당신이 찾고있는 것이라면 C #에 해당하는 것은 Environment.TickCount.


답변

타이밍에 관심이있는 경우 System.Diagnostics에 대한 참조를 추가하고 스톱워치를 사용하십시오.

예를 들면 :

var sw = Stopwatch.StartNew();
...
var elapsedStage1 = sw.ElapsedMilliseconds;
...
var elapsedStage2 = sw.ElapsedMilliseconds;
...
sw.Stop();


답변

DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()


답변

System.currentTimeMillis()자바는 1970 년 1 월 1 일부터 현재 시간을 밀리 초 단위로 반환

C #은

public static double GetCurrentMilli()
    {
        DateTime Jan1970 = new DateTime(1970, 1, 1, 0, 0,0,DateTimeKind.Utc);
        TimeSpan javaSpan = DateTime.UtcNow - Jan1970;
        return javaSpan.TotalMilliseconds;
    }

편집 : 제안대로 utc로 만들었습니다. 🙂


답변

우리는 또한 약간 멋져서 확장 메서드로 수행하여 DateTime 클래스를 중단 할 수 있습니다.

public static class DateTimeExtensions
{
    private static DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    public static long currentTimeMillis(this DateTime d)
    {
        return (long) ((DateTime.UtcNow - Jan1st1970).TotalMilliseconds);
    }
}


답변

다음은 Unix 타임 스탬프를 근사화하는 간단한 방법입니다. UTC를 사용하는 것은 유닉스 개념에 더 가깝고 은밀해야 double합니다.long .

TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));
long millis = (long)ts.TotalMilliseconds;
Console.WriteLine("millis={0}", millis);

인쇄물:

millis=1226674125796