¿Cuál es el equivalente de Java System.currentTimeMillis()
en C#?Java System.currentTimeMillis() equivalente en C#
Respuesta
El marco no incluye los viejos segundos (o milisegundos) desde 1970. Lo más cerca que se obtiene es DateTime.Ticks que es el número de 100 nanosegundos desde enero de 0001. 1 ª
¿Daría (DateTime.Ticks/10000000) - (el número de segundos entre 0001 y 1970) una respuesta precisa? – Liam
Una alternativa:
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;
}
la System.currentTimeMillis()
en java devuelve la hora actual en milisegundos desde 1/1/1970
C# que sería
public static double GetCurrentMilli()
{
DateTime Jan1970 = new DateTime(1970, 1, 1, 0, 0,0,DateTimeKind.Utc);
TimeSpan javaSpan = DateTime.UtcNow - Jan1970;
return javaSpan.TotalMilliseconds;
}
edición: hizo UTC como se sugiere :)
DateTime.Now usa la hora local, no UTC. No sé exactamente qué sucede cuando restas un tipo desconocido de DateTime de uno local, pero es mejor configurar ambos para UTC :) –
Aquí es una forma sencilla de aproximarse a la marca de tiempo Unix. El uso de UTC está más cerca del concepto de Unix, y necesita encubrir desde double
hasta 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);
impresiones:
millis=1226674125796
exactamente lo que necesitaba. – Ajibola
También podríamos conseguir un poco de fantasía y hacerlo como un método de extensión, por lo que cuelga de la clase 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);
}
}
Interesante mezcla de idiomas que tienes allí;) –
¡Lol! A veces lo hago: tengo que cambiar mucho entre los dos, pero normalmente está en el IDE, así que tengo un feedback instantáneo sobre él. –
¿No está esto un poco mal? Este método de extensión se transferirá a cualquier * instancia * de DateTime, pero no utiliza la instancia. Simplemente parece confuso ... No creo que deba requerir un parámetro que no use – mortb
Un idioma común en Java es utilizar el currentTimeMillis()
para el tiempo o los propósitos de programación, donde no está interesado en los milisegundos reales desde 1970, sino que calcula algún valor relativo y compare invocat más tarde iones de currentTimeMillis()
a ese valor.
Si eso es lo que está buscando, el equivalente de C# es Environment.TickCount
.
Pero ambos dan números diferentes. ¿Cómo se comparan correctamente? 'C# give: 2688547' y' Java give: 1390707872687' – Elshan
@Elshan No se pueden comparar. Son diferentes tics. Esta técnica es para el tiempo y la programación dentro de una aplicación, no a través de las aplicaciones. – Barend
'System.currentTimeMillis()' devuelve la hora UTC en ms desde 1970, mientras que 'Environment.TickCount' devuelve ms desde que se inició la aplicación. 'System.currentTimeMillis()' es bueno para verificar el tiempo transcurrido, pero si quiere que dos duraciones sean comparables, debe usar 'System.nanoTime()'. – michelpm
Si está interesado en TIEMPO, agregue una referencia a System.Diagnostics y use un Cronómetro.
Por ejemplo:
var sw = Stopwatch.StartNew();
...
var elapsedStage1 = sw.ElapsedMilliseconds;
...
var elapsedStage2 = sw.ElapsedMilliseconds;
...
sw.Stop();
sé pregunta pide equivalente pero desde que uso los 2 para las mismas tareas que lanzo en GetTickCount. Puede que tenga nostalgia, pero System.currentTimeMillis() y GetTickCount() son los únicos que uso para obtener tics.
[DllImport("kernel32.dll")]
static extern uint GetTickCount();
// call
uint ticks = GetTickCount();
acabo considera más sencillo manera de cómo lograr lo que usted ha estado luchando por la siguiente manera:
DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond
'DateTime.UtcNow' es una mejor opción –
Si desea una marca de tiempo a comparar entre los diferentes procesos, diferentes idiomas (Java, C, C#), bajo GNU/Linux y Windows (al menos siete):
C#:
private static long nanoTime() {
long nano = 10000L * Stopwatch.GetTimestamp();
nano /= TimeSpan.TicksPerMillisecond;
nano *= 100L;
return nano;
}
Java:
java.lang.System.nanoTime();
C de 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;
}
Windows C:
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;
}
- 1. Oracle es equivalente a java System.currentTimeMillis()?
- 2. Mal tiempo con System.currentTimeMillis() (Java)
- 3. Java TreeMap equivalente en C#?
- 4. C# DateTime.Ticks equivalente en Java
- 5. Java Map equivalente en C#
- 6. Anotación Java equivalente C#
- 7. ¿Cuándo se desbordará System.currentTimeMillis()?
- 8. Convirtiendo un java System.currentTimeMillis() hasta la fecha en python
- 9. Java equivalente de cin (C++)
- 10. C# Uri.EscapeDatastring() equivalente para Java
- 11. C# Equivalente a Java IdentityHashMap
- 12. C++ equivalente de Java ByteBuffer?
- 13. Equivalente de C++ map.lower_bound en Java
- 14. Equivalente de IllegalArgumentException de Java en C++
- 15. Equivalente a C# ObservableCollection en Java
- 16. Equivalente al DateTime.Now de C# en Java?
- 17. ¿Equivalente a las interfaces Java en C++?
- 18. DebugBreak equivalente en Java?
- 19. sprintf equivalente en Java
- 20. __LINE__ equivalente en Java?
- 21. equivalente de ungetc En java
- 22. C# equivalente al charAt de Java()?
- 23. C# equivalente de Java ejemplo inicializador
- 24. Java equivalente de C# 'usando' declaración
- 25. C# equivalente a Thread.setDaemon de Java?
- 26. C# equivalente al recurso de Java
- 27. C# equivalente a Exception.printStackTrace() de Java?
- 28. C# equivalente a los mkdirs de Java()
- 29. C++ Equivalente a BlockingQueue de Java
- 30. Objetivo C equivalente a Java ArrayList
Sólo por curiosidad, ¿por qué necesita los milisegundos desde el 1970? –