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