Obtenga la hora actual en milisegundos en C#

Abdul Mateen 12 octubre 2023
  1. Fecha y Hora en Programación
  2. Milisegundos en C#
  3. Ejemplos de codificación usando milisegundos en C#
Obtenga la hora actual en milisegundos en C#

En este artículo, aprenderá cómo obtener la hora actual en milisegundos. Discutiremos la fecha y la hora en la programación, incluida la fecha y la hora del sistema.

A continuación, discutiremos formas de obtener milisegundos. Finalmente, discutiremos algunos ejemplos de programación usando milisegundos.

Fecha y Hora en Programación

La fecha y la hora pueden formar parte de muchas entidades. Muchas transacciones requieren una fecha y hora actual.

Por ejemplo, venta, compra, unión, devolución, emisión, etc. En muchos programas, necesitamos comparación y cálculos de fecha y hora.

Podemos especificar muchos ejemplos, como averiguar los miembros senior, los días entre la emisión y la devolución, el tiempo entre algunas actividades como el pedido y la entrega, el tiempo entre la salida y el cruce de línea en una carrera, para encontrar la velocidad de escritura, etc.

Cada computadora tiene un reloj de sistema, que permanece activo incluso si apagamos nuestras computadoras. Casi todos los lenguajes de programación brindan algún método para acceder a los datos y la hora del sistema.

Hoy en día, en todo el mundo, muchos servidores proporcionan API para obtener fechas y horas utilizando nuestro código.

La mayoría de los lenguajes de programación avanzados proporcionan un solo objeto que tiene fecha y hora; por lo general, se refiere como “ahora”. De manera similar, C# ofrece diferentes formas de acceder a los datos y la hora del sistema.

Vea un ejemplo:

using System;
class Test {
  static void Main() {
    DateTime date_time = DateTime.Now;
    Console.WriteLine("Welcome, the current date and time is: " +
                      date_time.ToString("MM/dd/yyyy HH:mm:ss"));
  }
}

Producción :

Welcome, the current date and time is: 11/05/2022 07:49:27

Obteniendo ideas sobre la fecha y la hora, a continuación discutiremos formas de obtener milisegundos en C#.

Milisegundos en C#

En C#, existe una estructura DateTime del espacio de nombres del sistema que proporciona un instante de tiempo, es decir, principalmente la fecha y la hora de un día. Usando un constructor, puede inicializar el objeto asignando un valor de fecha y hora o analizándolo desde su representación de cadena.

Hay varias formas de representar el tiempo en milisegundos; discutiremos algunos de ellos.

Uso de la propiedad Milisegundo

La estructura DateTime proporciona una propiedad Millisegundo a través de la cual podemos obtener el componente de milisegundos para una fecha determinada. Por ejemplo:

using System;
class Test {
  static void Main() {
    DateTime date_time = DateTime.Now;
    int ms = date_time.Millisecond;
    Console.WriteLine("The current time is:" + date_time.ToString());
    Console.WriteLine("The current time in milliseconds is: " + ms.ToString());
  }
}

En el ejemplo anterior, podemos ver que el objeto fecha_hora se ha inicializado con la fecha y hora actual, es decir, ahora, utilizado con la propiedad milisegundo. Esta propiedad devuelve un valor entero en milisegundos de la hora actual.

Producción :

The current time is:11/05/2022 04:17:00
The current time in milliseconds is: 736

Hemos creado un objeto con la fecha y la hora actuales con fines de demostración. Aquí hay otro método para extraer milisegundos del objeto date_time.

Aquí, el primer parámetro es el año, el segundo parámetro es el mes y el tercer parámetro es el día.

De manera similar, el cuarto parámetro son las horas, el quinto los minutos, el sexto los segundos y el último los milisegundos.

DateTime date_time = new DateTime(2022, 11, 4, 9, 20, 30, 120);
Console.WriteLine("Milliseconds: {0:fff}", date_time);

En la segunda línea del código, estamos dando un especificador de formato para obtener milisegundos del valor fecha_hora. Para leer los detalles de los especificadores de formato, haga clic aquí.

Producción :

Milliseconds: 120

Uso del análisis de fecha y hora

Podemos convertir la representación de cadena de fecha y hora en un objeto DateTime llamando al método estático Parse de la misma clase. También podemos obtener el valor de fecha y hora llamando al método estático Parse de DateTimeOffset.

Luego, usamos un especificador de formato (ya discutido) para obtener milisegundos. Ver el código:

using System;
class Test {
  static void Main() {
    string date_time_string = "10/23/2022 9:22:50.125 AM";
    DateTime date_time = DateTime.Parse(date_time_string);
    DateTimeOffset date_value = DateTimeOffset.Parse(date_time_string);
    Console.WriteLine("Time in Milliseconds: {0}", date_time.ToString("fff"));
    Console.WriteLine("\nTime in Milliseconds: {0}", date_value.ToString("fff"));
  }
}

En el código anterior, puede ver que hemos utilizado una representación de cadena de fecha y hora en el método de análisis, que la convertirá automáticamente a la fecha y hora correspondiente.

Producción :

Time in Milliseconds: 125
Time in Milliseconds: 125

Usando el método de tiempo de Unix

La forma más conveniente de obtener el tiempo en milisegundos es usar una marca de tiempo de Unix. Esta marca de tiempo devuelve varios segundos que han transcurrido desde 00:00:00 UTC (Tiempo universal coordinado) en enero de 1970, sin incluir los segundos bisiestos.

El método C# ToUnixTimeMilliseconds se utiliza para obtener el tiempo en milisegundos. Por ejemplo:

DateTimeOffset date = DateTimeOffset.UtcNow;
long milliseconds = date.ToUnixTimeMilliseconds();
Console.WriteLine(milliseconds);

Producción :

1667624911885

Ejecutamos el mismo código después de aproximadamente 13 minutos y algunos segundos y obtuvimos el valor:

1667625703243

La diferencia es 791358; si dividimos esto por 1000 milisegundos, obtendremos 791.358 segundos. Además, si dividimos por 60 segundos, obtendremos 13.1893 minutos.

Queremos mostrar que este método no devuelve un valor constante; en cambio, devuelve los segundos transcurridos desde enero de 1970.

En segundo lugar, usando este método, podemos usar la diferencia de valores para medir milisegundos en algunos períodos.

Sello de tiempo de milisegundos personalizado

También puede medir su tiempo usando la propiedad Ticks en C#. El rango de valores de los ticks se encuentra entre minValue y maxValue.

El siguiente ejemplo muestra el uso de ticks para obtener el tiempo en milisegundos.

long timeInMilliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
Console.WriteLine(timeInMilliseconds);

Producción :

63803225681236

Uso de la clase Cronómetro

La clase Cronómetro en C# se utiliza para medir la frecuencia de la tarea en el programa. Mide el tiempo transcurrido y es útil para la optimización del código.

Usando la clase Cronómetro, puede calcular el tiempo en milisegundos. Por ejemplo:

using System;
using System.Threading;
using System.Diagnostics;
class Test {
  static void Main() {
    Stopwatch st = new Stopwatch();
    st.Start();
    Thread.Sleep(1000);
    st.Stop();
    Console.WriteLine("Time elapsed in Milliseconds: {0}", st.ElapsedMilliseconds);
  }
}

Aquí, usamos la clase Stopwatch de System.Diagnostics. Para fines de demostración, tenemos que iniciar el cronómetro y detenerlo después de un segundo.

En el medio, podemos hacer cualquier tarea requerida. Aquí, hemos llamado intencionalmente al método Sleep de la clase Thread de System.Threading.

La función Sleep crea tiempo entre los métodos de inicio/parada. Finalmente, estamos imprimiendo la propiedad ElapsedMilliseconds, que representa el tiempo transcurrido entre el inicio y la finalización.

Producción :

Time elapsed in Milliseconds: 1000

La salida muestra el tiempo empleado por el método Sleep. Podemos volver a comprobar esto aumentando el tiempo en el método Sleep. A continuación, vamos a discutir algunos ejemplos de codificación usando milisegundos.

Ejemplos de codificación usando milisegundos en C#

Tenemos algunos ejemplos de codificación que usan milisegundos en nuestro programa.

Ejemplo 1

Primero, tenemos un ejemplo de cómo calcular el tiempo que el usuario está escribiendo. Aquí, tenemos el código:

using System;
using System.Threading;
using System.Diagnostics;
class Test {
  static void Main() {
    Stopwatch st = new Stopwatch();
    Console.WriteLine("Start typing without using enter key");
    st.Start();
    Console.ReadLine();
    st.Stop();
    Console.WriteLine("You have typed for {0}", st.ElapsedMilliseconds / 1000 + " seconds");
  }
}

Este código recibe información del usuario entre los métodos iniciar y detener. En general, tomamos la entrada del usuario en alguna variable, mientras que solo intentamos que transcurra algún tiempo entre la función de inicio y parada del cronómetro.

En la última línea, calculamos el número de segundos, dividiendo los milisegundos transcurridos por 1000. Una muestra de ejecución de este código es:

Start typing without using enter key
I am just typing and typing and typing
You have typed for 15 seconds

La primera línea de esta salida es un mensaje para el usuario. En la segunda línea, el usuario está escribiendo un texto antes de presionar la tecla Enter, y la última línea de la salida muestra el tiempo transcurrido en segundos.

Ejemplo 2

En este ejemplo, estamos calculando el tiempo para ordenar una matriz. Hemos declarado un tamaño de matriz de 10000000 y llamamos a la función ordenar para ordenar la matriz.

using System;
using System.Threading;
using System.Diagnostics;
class Array_Sort {
  public static void Main() {
    Random rn = new Random();
    int[] arr = new int[10000000];
    for (int i = 0; i < 1000000; i++) arr[i] = rn.Next(0, 50000);
    Stopwatch st = new Stopwatch();
    st.Start();
    Array.Sort(arr);
    st.Stop();
    Console.WriteLine("Sorting time: {0}", st.ElapsedMilliseconds + " milliseconds");
  }
}

Aquí, hemos inicializado la matriz al azar. Estamos llamando a la función de biblioteca ordenar para ordenar la matriz.

La llamada de función se encuentra entre las funciones inicio y parada.

En la última línea, se imprime en milisegundos el tiempo entre el inicio y la finalización, el tiempo de clasificación.

Producción :

Sorting time: 2227 milliseconds

Ejemplo 3

El tercer ejemplo demuestra el uso de milisegundos en el seguimiento del tiempo de proceso del pedido. En la práctica, tenemos alguna forma formal de hacerlo; sin embargo, el supervisor ingresará la clave cuando se entregue el pedido al cliente.

Aquí, estamos calculando la diferencia entre la colocación del pedido y los tiempos de entrega.

using System;
class Order_Track {
  public static void Main() {
    DateTimeOffset date = DateTimeOffset.UtcNow;
    DateTime date_time1 = DateTime.Now;
    long order_placed_time = date_time1.Millisecond;
    Console.WriteLine("Press Yes, when order is delivered");
    Console.ReadLine();
    DateTime date_time2 = DateTime.Now;
    long order_deliver_time = date_time2.Millisecond;
    long difference = order_deliver_time - order_placed_time;
    Console.WriteLine("Order process time:" + difference + " milliseconds");
  }
}

En la tercera línea principal, hemos tomado la hora del sistema y la hemos almacenado en la variable order_placed_time.

A continuación, tenemos un mensaje para que un supervisor o autoridad competente introduzca la clave cuando se entregue el pedido. Después de la entrada, volvimos a tomar la hora del sistema.

En la línea anterior, estamos imprimiendo esta vez. Finalmente, en la penúltima línea, calculamos la diferencia entre ambos tiempos.

Producción :

Press Yes, when order is delivered
Order process time:536 milliseconds

En este artículo, vimos exhaustivamente la fecha y la hora. Hemos discutido varias formas de obtener milisegundos en C#.

Al final, hemos visto algunos ejemplos de la aplicación de milisegundos.

Artículo relacionado - Csharp DateTime