Cómo Obtener la Fecha Actual en C# (C Sharp)

En esta página:
A veces necesitamos obtener la fecha actual con el lenguaje de programación C#, sin la hora.
Obtenerla es fácil, solo debes escribir y ejecutar ciertas líneas de código.
En este tutorial te enseñaré a Cómo Obtener la Fecha Actual en C# (C Sharp), vamos con ello.
Cómo Obtener la Fecha Actual en C# (C Sharp)
A continuación te mostraré las diferentes formas y situaciones en las que puedes obtener la fecha actual con C#:
1. Las formas básicas
Estas son las formas básicas:
Obtener fecha y hora local:
1 2 3 4 5 |
// Fecha y hora local del sistema DateTime ahoraLocal = DateTime.Now; Console.WriteLine(ahoraLocal); |
Y obtenemos:

En la imagen anterior ejecutamos C# en la terminal.
Si deseas aprender a hacerlo, sigue los pasos de este video de nuestro canal de YouTube.
Obtener solo la fecha (hora = 00:00:00):
1 2 3 4 5 |
// Fecha actual sin hora (hora = 00:00:00) DateTime hoy = DateTime.Today; Console.WriteLine(hoy); |
Obtener fecha y hora en UTC:
1 2 3 4 5 |
// Fecha y hora en UTC (Tiempo Universal Coordinado) DateTime ahoraUtc = DateTime.UtcNow; Console.WriteLine(ahoraUtc); |
Nota: DateTime.Now devuelve la hora local del equipo. DateTime.UtcNow devuelve la misma instantánea en tiempo universal (sin información de zona).
2. DateTimeOffset: mejor para instantes en tiempo con zona
DateTimeOffset combina una fecha/hora con un desplazamiento de zona horaria. Es recomendable cuando necesitas almacenar o transmitir instantes de tiempo con información de offset.
1 2 3 4 5 6 7 8 9 |
// Fecha/hora con offset (p. ej. -05:00) DateTimeOffset dto = DateTimeOffset.Now; Console.WriteLine(dto); // Convertir a UTC DateTimeOffset dtoUtc = dto.ToUniversalTime(); Console.WriteLine(dtoUtc); |
Usa DateTimeOffset cuando registres eventos que luego puedan ser interpretados en distintas zonas horarias.
3. Trabajando con zonas horarias
Para convertir entre zonas horarias usa TimeZoneInfo:
1 2 3 4 5 6 7 |
// Obtener info de una zona y convertir var mexicoCity = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); // Windows DateTime utcNow = DateTime.UtcNow; DateTime horaCDMX = TimeZoneInfo.ConvertTimeFromUtc(utcNow, mexicoCity); Console.WriteLine(horaCDMX); |
Los IDs de zona son diferentes en Windows y Linux/macOS.
En Linux suelen usarse IDs IANA (por ejemplo “America/Mexico_City”).
En Windows, “Central Standard Time”.
Ten esto en cuenta si tu app es multiplataforma.
4. Formateo de fecha y cultura
Para presentar la fecha de forma legible o según la cultura, usa ToString con formatos o CultureInfo:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.Globalization; DateTime ahora = DateTime.Now; // Formatos personalizados Console.WriteLine(ahora.ToString("dd/MM/yyyy")); // 17/10/2025 Console.WriteLine(ahora.ToString("yyyy-MM-dd HH:mm:ss")); // 2025-10-17 23:45:12 // Formato con cultura (por ejemplo español - España) var ci = new CultureInfo("es-ES"); Console.WriteLine(ahora.ToString("D", ci)); // Viernes, 17 de octubre de 2025 |
Si quieres “Viernes, 17 de octubre de 2025” en español, usa el formato largo con CultureInfo(“es-ES”).
5. Obtener timestamp Unix (segundos desde 1970)
1 2 3 4 5 6 7 |
// Desde .NET 6+ puedes usar DateTimeOffset.ToUnixTimeSeconds() long unixSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); Console.WriteLine(unixSeconds); // En versiones antiguas puedes restar new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc) y obtener los segundos. |
Buenas prácticas y recomendaciones
- Usa DateTime.UtcNow o DateTimeOffset para almacenar tiempos de eventos y evitar problemas con cambios de zona o horario de verano.
- Usa CultureInfo para formatear la fecha según la región del usuario.
- Evita depender del reloj del cliente para decisiones críticas; usa un servidor de referencia o timestamps firmados si es necesario.
- Ten en cuenta las diferencias de IDs de zonas entre Windows y Linux si tu app es multiplataforma.
Ejemplo completo
Ejecuta este código para ver todas las variantes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using System; using System.Globalization; class Program { static void Main() { Console.WriteLine("DateTime.Now: " + DateTime.Now); Console.WriteLine("DateTime.Today: " + DateTime.Today); Console.WriteLine("DateTime.UtcNow: " + DateTime.UtcNow); var dto = DateTimeOffset.Now; Console.WriteLine("DateTimeOffset.Now: " + dto); Console.WriteLine("Unix seconds (UTC): " + DateTimeOffset.UtcNow.ToUnixTimeSeconds()); // Formateo con cultura var ci = new CultureInfo("es-ES"); Console.WriteLine("Formato largo (es): " + DateTime.Now.ToString("D", ci)); // Ejemplo conversión de zona (puede variar según sistema) try { var tz = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); // Windows example Console.WriteLine("Hora en 'Central Standard Time': " + TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz)); } catch (TimeZoneNotFoundException) { Console.WriteLine("Zona horaria no encontrada en este sistema."); } } } |
Así de fácil puedes obtener la fecha actual en C# (C Sharp).
Conclusión
En este tutorial has aprendido a Cómo Obtener la Fecha Actual en C# (C Sharp).
Te será útil para trabajar con la hora en tus proyectos con C#.
Recuerda practicar mucho para que llegues a dominar el lenguaje de programación C#.
Síguenos en nuestras Redes Sociales y demás canales digitales para que no te pierdas nuestros próximos contenidos.
Social
Redes Sociales (Developers)
Redes Sociales (Digital)