Quel est l'équivalent de la méthode Java System.currentTimeMillis()
en C# ?
Réponses
Trop de publicités?Nous pourrions également être un peu plus fantaisistes et le faire en tant que méthode d'extension, de sorte qu'il s'accroche à la classe 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);
}
}
Voici une façon simple d'approximer l'horodatage Unix. L'utilisation de UTC est plus proche du concept Unix, et vous devez passer de double
a 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);
des empreintes :
millis=1226674125796
Si vous voulez qu'un horodatage soit comparé entre différents processus, différents langages (Java, C, C#), sous GNU/Linux et Windows (Seven au moins) :
C# :
private static long nanoTime() {
long nano = 10000L * Stopwatch.GetTimestamp();
nano /= TimeSpan.TicksPerMillisecond;
nano *= 100L;
return nano;
}
Java :
java.lang.System.nanoTime();
C GNU/Linux :
static int64_t hpms_nano() {
struct timespec t;
clock_gettime( CLOCK_MONOTONIC, &t );
int64_t nano = t.tv_sec;
nano *= 1000;
nano *= 1000;
nano *= 1000;
nano += t.tv_nsec;
return nano;
}
C Windows :
static int64_t hpms_nano() {
static LARGE_INTEGER ticksPerSecond;
if( ticksPerSecond.QuadPart == 0 ) {
QueryPerformanceFrequency( &ticksPerSecond );
}
LARGE_INTEGER ticks;
QueryPerformanceCounter( &ticks );
uint64_t nano = ( 1000*1000*10UL * ticks.QuadPart ) / ticksPerSecond.QuadPart;
nano *= 100UL;
return nano;
}