AYUDA .NET

Objetos Datetime en C# (Cómo funciona para desarrolladores)

Actualizado 3 de abril, 2024
Compartir:

Introducción

los objetos DateTime en C# son fundamentales para trabajar con fechas y horas en las aplicaciones .NET Framework. Proporcionan un sólido conjunto de funcionalidades para manipular, formatear y comparar fechas y horas.

Este artículo pretende proporcionar una visión general de los objetos DateTime en C#, cubriendo su creación, manipulación, formateo y casos de uso comunes. Al final del artículo, también exploraremos cómo IronPDF de Iron Software puede generar un documento PDF sobre la marcha en aplicaciones C#.

Creación de objetos DateTime

Crear un objeto DateTime en C# es sencillo. Hay varios constructores disponibles para inicializar un objeto DateTime con diferentes parámetros:

//  Fecha y hora actuales
DateTime currentDateTime = DateTime.Now;
//  Fecha y hora concretas
DateTime specificDateTime = new DateTime(2024, 3, 16, 10, 30, 0);
//  Sólo fecha
DateTime dateOnly = DateTime.Today;
//  Fecha y hora en UTC
DateTime utcDateTime = DateTime.UtcNow;
//  Fecha y hora actuales
DateTime currentDateTime = DateTime.Now;
//  Fecha y hora concretas
DateTime specificDateTime = new DateTime(2024, 3, 16, 10, 30, 0);
//  Sólo fecha
DateTime dateOnly = DateTime.Today;
//  Fecha y hora en UTC
DateTime utcDateTime = DateTime.UtcNow;
'  Fecha y hora actuales
Dim currentDateTime As DateTime = DateTime.Now
'  Fecha y hora concretas
Dim specificDateTime As New DateTime(2024, 3, 16, 10, 30, 0)
'  Sólo fecha
Dim dateOnly As DateTime = DateTime.Today
'  Fecha y hora en UTC
Dim utcDateTime As DateTime = DateTime.UtcNow
VB   C#

Manipulación de objetos `DateTime

los objetos DateTime proporcionan varios métodos para manipular fechas y horas, como sumar o restar intervalos de tiempo, extraer componentes y convertir entre zonas horarias.

DateTime now = DateTime.Now;
//  Añadir días
DateTime futureDate = now.AddDays(7);
//  Restar horas
DateTime pastTime = now.AddHours(-3);
//  Obtener componentes
int year = now.Year;
int month = now.Month;
int day = now.Day;
int hour = now.Hour;
int minute = now.Minute;
int second = now.Second;
//  Conversión entre husos horarios
DateTime utcTime = DateTime.UtcNow;
DateTime localTime = utcTime.ToLocalTime();
DateTime now = DateTime.Now;
//  Añadir días
DateTime futureDate = now.AddDays(7);
//  Restar horas
DateTime pastTime = now.AddHours(-3);
//  Obtener componentes
int year = now.Year;
int month = now.Month;
int day = now.Day;
int hour = now.Hour;
int minute = now.Minute;
int second = now.Second;
//  Conversión entre husos horarios
DateTime utcTime = DateTime.UtcNow;
DateTime localTime = utcTime.ToLocalTime();
Dim now As DateTime = DateTime.Now
'  Añadir días
Dim futureDate As DateTime = now.AddDays(7)
'  Restar horas
Dim pastTime As DateTime = now.AddHours(-3)
'  Obtener componentes
Dim year As Integer = now.Year
Dim month As Integer = now.Month
Dim day As Integer = now.Day
Dim hour As Integer = now.Hour
Dim minute As Integer = now.Minute
Dim second As Integer = now.Second
'  Conversión entre husos horarios
Dim utcTime As DateTime = DateTime.UtcNow
Dim localTime As DateTime = utcTime.ToLocalTime()
VB   C#

Formateo de objetos `DateTime

los objetos DateTime representan horas o fechas que pueden formatearse en cadenas utilizando varios especificadores de formato para representarlas en el formato requerido.

DateTime dateTime = DateTime.Now;
//  Formato estándar de fecha y hora
string standardFormat = dateTime.ToString("G");
//  Formato personalizado
string customFormat = dateTime.ToString("dd/MM/yyyy HH:mm:ss");
//  Formato de clasificación
string sortableFormat = dateTime.ToString("yyyy-MM-ddTHH:mm:ss");
DateTime dateTime = DateTime.Now;
//  Formato estándar de fecha y hora
string standardFormat = dateTime.ToString("G");
//  Formato personalizado
string customFormat = dateTime.ToString("dd/MM/yyyy HH:mm:ss");
//  Formato de clasificación
string sortableFormat = dateTime.ToString("yyyy-MM-ddTHH:mm:ss");
Imports System

Dim dateTime As DateTime = DateTime.Now
'  Formato estándar de fecha y hora
Dim standardFormat As String = dateTime.ToString("G")
'  Formato personalizado
Dim customFormat As String = dateTime.ToString("dd/MM/yyyy HH:mm:ss")
'  Formato de clasificación
Dim sortableFormat As String = dateTime.ToString("yyyy-MM-ddTHH:mm:ss")
VB   C#

Comparación de objetos `DateTime

C# proporciona operadores de comparación estándar (<, >, <=, >=, ==, !=) que se puede utilizar para comparar dos objetos DateTime directamente. Estos operadores comparan los ticks subyacentes de los objetos DateTime, que representan el número de intervalos de 100 nanosegundos que han transcurrido desde el 1 de enero de 0001, a las 00:00:00.000 del calendario gregoriano.

He aquí un ejemplo que demuestra el uso de los operadores de comparación:

DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddDays(1);
if (date1 < date2)
{
    Console.WriteLine("date1 is earlier than date2.");
}
else if (date1 > date2)
{
    Console.WriteLine("date1 is later than date2.");
}
else
{
    Console.WriteLine("date1 is equal to date2.");
}
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddDays(1);
if (date1 < date2)
{
    Console.WriteLine("date1 is earlier than date2.");
}
else if (date1 > date2)
{
    Console.WriteLine("date1 is later than date2.");
}
else
{
    Console.WriteLine("date1 is equal to date2.");
}
Dim date1 As DateTime = DateTime.Now
Dim date2 As DateTime = DateTime.Now.AddDays(1)
If date1 < date2 Then
	Console.WriteLine("date1 is earlier than date2.")
ElseIf date1 > date2 Then
	Console.WriteLine("date1 is later than date2.")
Else
	Console.WriteLine("date1 is equal to date2.")
End If
VB   C#

Utilización del método DateTime.Compare C#

Además de los operadores de comparación, los objetos DateTime también proporcionan métodos para la comparación de los valores relativos entre dichos objetos. Estos métodos ofrecen más flexibilidad y legibilidad en determinados escenarios. La función CompareTo()compara los objetosDateTime` subyacentes para determinar el resultado.

Supone que las dos fechas están en los mismos valores de zona horaria. Tras comparar los objetos devuelve un valor entero que indica mayor, menor o igual. Los mismos valores de fecha devuelven un valor entero de cero.

DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddDays(1);
int result = date1.CompareTo(date2);
if (result < 0)
{
    Console.WriteLine("date1 is earlier than date2.");
}
else if (result > 0)
{
    Console.WriteLine("date1 is later than date2.");
}
else
{
    Console.WriteLine("date1 is equal to date2.");
}
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddDays(1);
int result = date1.CompareTo(date2);
if (result < 0)
{
    Console.WriteLine("date1 is earlier than date2.");
}
else if (result > 0)
{
    Console.WriteLine("date1 is later than date2.");
}
else
{
    Console.WriteLine("date1 is equal to date2.");
}
Dim date1 As DateTime = DateTime.Now
Dim date2 As DateTime = DateTime.Now.AddDays(1)
Dim result As Integer = date1.CompareTo(date2)
If result < 0 Then
	Console.WriteLine("date1 is earlier than date2.")
ElseIf result > 0 Then
	Console.WriteLine("date1 is later than date2.")
Else
	Console.WriteLine("date1 is equal to date2.")
End If
VB   C#

Comparación de objetos DateTime con tolerancia

Para comparar objetos DateTime, especialmente cuando se trata de cálculos que implican intervalos de tiempo, es importante tener en cuenta un nivel de tolerancia debido a las posibles diferencias de precisión.

Esto puede conseguirse comparando la diferencia absoluta entre dos valores DateTime con un umbral de tolerancia predefinido.

class Program
{
    public static void Main()
    {
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddMilliseconds(10);
TimeSpan tolerance = TimeSpan.FromMilliseconds(5);
bool isEqual = Math.Abs((date1 - date2).TotalMilliseconds) <= tolerance.TotalMilliseconds;
if (isEqual)
{
    Console.WriteLine("date1 is considered equal to date2 within the tolerance.");
}
else
{
    Console.WriteLine("date1 is not equal to date2 within the tolerance.");
}
}
}
class Program
{
    public static void Main()
    {
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddMilliseconds(10);
TimeSpan tolerance = TimeSpan.FromMilliseconds(5);
bool isEqual = Math.Abs((date1 - date2).TotalMilliseconds) <= tolerance.TotalMilliseconds;
if (isEqual)
{
    Console.WriteLine("date1 is considered equal to date2 within the tolerance.");
}
else
{
    Console.WriteLine("date1 is not equal to date2 within the tolerance.");
}
}
}
Friend Class Program
	Public Shared Sub Main()
Dim date1 As DateTime = DateTime.Now
Dim date2 As DateTime = DateTime.Now.AddMilliseconds(10)
Dim tolerance As TimeSpan = TimeSpan.FromMilliseconds(5)
Dim isEqual As Boolean = Math.Abs((date1.Subtract(date2)).TotalMilliseconds) <= tolerance.TotalMilliseconds
If isEqual Then
	Console.WriteLine("date1 is considered equal to date2 within the tolerance.")
Else
	Console.WriteLine("date1 is not equal to date2 within the tolerance.")
End If
	End Sub
End Class
VB   C#

Huso horario y horario de verano

los objetos DateTime en C# pueden representar tanto la hora local como el Tiempo Universal Coordinado (UTC). Es importante tener en cuenta las conversiones de zona horaria, sobre todo cuando se trata de aplicaciones globales.

DateTime localTime = DateTime.Now;
DateTime utcTime = DateTime.UtcNow;
Console.WriteLine("Local Time: " + localTime);
Console.WriteLine("UTC Time: " + utcTime);
DateTime localTime = DateTime.Now;
DateTime utcTime = DateTime.UtcNow;
Console.WriteLine("Local Time: " + localTime);
Console.WriteLine("UTC Time: " + utcTime);
Dim localTime As DateTime = DateTime.Now
Dim utcTime As DateTime = DateTime.UtcNow
Console.WriteLine("Local Time: " & localTime)
Console.WriteLine("UTC Time: " & utcTime)
VB   C#

IronPDF para generar documentos PDF en C#

IronPDF de Iron Software es una biblioteca de generación de PDF eficaz y fácil de usar. Podemos instalarlo utilizando el gestor de paquetes NuGet

Objetos Datetime en C# (Cómo funciona para desarrolladores): Figura 1

NuGet\Install-Package IronPdf -Version 2024.3.4

O desde Visual Studio como se muestra a continuación

Objetos Datetime en C# (Cómo funciona para desarrolladores): Figura 2 - Instalación de IronPDF con el gestor de paquetes NuGet

Ahora vamos a sumergirnos en la generación de PDF para hacer una demostración de un objeto DateTime.

class Program
{
    static void Main()
    {
        Console.WriteLine("-----------Iron Software-------------");
        var renderer = new ChromePdfRenderer(); //  var patrón
        var content = " <h1> Iron Software is Awesome </h1> Made with IronPDF!";
        content += "<h2>Demo Datetime Objects in C#</h2>";
        //  Fecha y hora actuales
        content += "<h3>Current date and time</h3>";
        DateTime currentDateTime = DateTime.Now;
        content += $"<p>Current date and time: {currentDateTime:U}</p>";
        Console.WriteLine($"Current date and time: {currentDateTime:U}");
        //  Fecha y hora concretas
        content += "<h3>Specific date and time</h3>";
        DateTime specificDateTime = new DateTime(2024, 3, 16, 10, 30, 0);
        content += $"<p>Specific date and time: {specificDateTime:U}</p>";
        Console.WriteLine($"Specific date and time: {specificDateTime:U}");
        //  Sólo fecha
        content += "<h3>Date Only</h3>";
        DateTime dateOnly = DateTime.Today;
        content += $"<p>Date only: {dateOnly:U}</p>";
        Console.WriteLine($"Date only: {dateOnly:U}");
        //  Fecha y hora en UTC
        content += "<h3>Date and time in UTC</h3>";
        DateTime utcDateTime = DateTime.UtcNow;
        content += $"<p>Date only: {dateOnly:U}</p>";
        Console.WriteLine($"Date only: {dateOnly:U}");
        //Comparar fechas con operadores
        content += "<h3>Compare dates with Operators</h3>";
        DateTime date1 = DateTime.Now;
        DateTime date2 = DateTime.Now.AddDays(1);
        content += $"<p>Compare date1 {date1:d}, date2 {date2:d}: {CompareDates(date1, date2)}</p>";
        Console.WriteLine($"Compare date1 {date1:U}, date2 {date2:U}: {dateOnly:U}");
        //Comparar fechas con el método de comparación
        content += "<h3>Compare dates with Compare Method</h3>";
        content += $"<p>Compare date1 {date1:d}, date2 {date2:d}: {CompareDatesWithCompare(date1, date2)}</p>";
        Console.WriteLine($"Compare date1 {date1:U}, date2 {date2:U}: {dateOnly:U}");
        var pdf = renderer.RenderHtmlAsPdf(content);
        pdf.SaveAs("outputDate.pdf"); //  Guardar PDF
    }
    public static string CompareDatesWithCompare(DateTime date1, DateTime date2)
    {
        int result = date1.CompareTo(date2);
        string resultString;
        if (result < 0)
        {
            resultString = "date1 is earlier than date2.";
            Console.WriteLine(resultString);
        }
        else if (result > 0)
        {
            resultString = "date1 is later than date2.";
            Console.WriteLine(resultString);
        }
        else
        {
            resultString = "date1 is equal to date2.";
            Console.WriteLine(resultString);
        }
        return resultString;
    }
    public static string CompareDates(DateTime date1, DateTime date2)
    {
        string result;
        if (CheckLessor(date1, date2))
        {
            result = "date1 is earlier than date2.";
            Console.WriteLine(result);
        }
        else if (CheckGreater(date1, date2))
        {
            result = "date1 is later than date2.";
            Console.WriteLine(result);
        }
        else
        {
            result = "date1 is equal to date2.";
            Console.WriteLine(result);
        }
        return result;
    }
    public static bool CheckGreater(DateTime date1, DateTime date2)
    {
        return date1 > date2;
    }
    public static bool CheckLessor(DateTime date1, DateTime date2)
    {
        return date1 < date2;
    }
}
class Program
{
    static void Main()
    {
        Console.WriteLine("-----------Iron Software-------------");
        var renderer = new ChromePdfRenderer(); //  var patrón
        var content = " <h1> Iron Software is Awesome </h1> Made with IronPDF!";
        content += "<h2>Demo Datetime Objects in C#</h2>";
        //  Fecha y hora actuales
        content += "<h3>Current date and time</h3>";
        DateTime currentDateTime = DateTime.Now;
        content += $"<p>Current date and time: {currentDateTime:U}</p>";
        Console.WriteLine($"Current date and time: {currentDateTime:U}");
        //  Fecha y hora concretas
        content += "<h3>Specific date and time</h3>";
        DateTime specificDateTime = new DateTime(2024, 3, 16, 10, 30, 0);
        content += $"<p>Specific date and time: {specificDateTime:U}</p>";
        Console.WriteLine($"Specific date and time: {specificDateTime:U}");
        //  Sólo fecha
        content += "<h3>Date Only</h3>";
        DateTime dateOnly = DateTime.Today;
        content += $"<p>Date only: {dateOnly:U}</p>";
        Console.WriteLine($"Date only: {dateOnly:U}");
        //  Fecha y hora en UTC
        content += "<h3>Date and time in UTC</h3>";
        DateTime utcDateTime = DateTime.UtcNow;
        content += $"<p>Date only: {dateOnly:U}</p>";
        Console.WriteLine($"Date only: {dateOnly:U}");
        //Comparar fechas con operadores
        content += "<h3>Compare dates with Operators</h3>";
        DateTime date1 = DateTime.Now;
        DateTime date2 = DateTime.Now.AddDays(1);
        content += $"<p>Compare date1 {date1:d}, date2 {date2:d}: {CompareDates(date1, date2)}</p>";
        Console.WriteLine($"Compare date1 {date1:U}, date2 {date2:U}: {dateOnly:U}");
        //Comparar fechas con el método de comparación
        content += "<h3>Compare dates with Compare Method</h3>";
        content += $"<p>Compare date1 {date1:d}, date2 {date2:d}: {CompareDatesWithCompare(date1, date2)}</p>";
        Console.WriteLine($"Compare date1 {date1:U}, date2 {date2:U}: {dateOnly:U}");
        var pdf = renderer.RenderHtmlAsPdf(content);
        pdf.SaveAs("outputDate.pdf"); //  Guardar PDF
    }
    public static string CompareDatesWithCompare(DateTime date1, DateTime date2)
    {
        int result = date1.CompareTo(date2);
        string resultString;
        if (result < 0)
        {
            resultString = "date1 is earlier than date2.";
            Console.WriteLine(resultString);
        }
        else if (result > 0)
        {
            resultString = "date1 is later than date2.";
            Console.WriteLine(resultString);
        }
        else
        {
            resultString = "date1 is equal to date2.";
            Console.WriteLine(resultString);
        }
        return resultString;
    }
    public static string CompareDates(DateTime date1, DateTime date2)
    {
        string result;
        if (CheckLessor(date1, date2))
        {
            result = "date1 is earlier than date2.";
            Console.WriteLine(result);
        }
        else if (CheckGreater(date1, date2))
        {
            result = "date1 is later than date2.";
            Console.WriteLine(result);
        }
        else
        {
            result = "date1 is equal to date2.";
            Console.WriteLine(result);
        }
        return result;
    }
    public static bool CheckGreater(DateTime date1, DateTime date2)
    {
        return date1 > date2;
    }
    public static bool CheckLessor(DateTime date1, DateTime date2)
    {
        return date1 < date2;
    }
}
Friend Class Program
	Shared Sub Main()
		Console.WriteLine("-----------Iron Software-------------")
		Dim renderer = New ChromePdfRenderer() '  var patrón
		Dim content = " <h1> Iron Software is Awesome </h1> Made with IronPDF!"
		content &= "<h2>Demo Datetime Objects in C#</h2>"
		'  Fecha y hora actuales
		content &= "<h3>Current date and time</h3>"
		Dim currentDateTime As DateTime = DateTime.Now
		content &= $"<p>Current date and time: {currentDateTime:U}</p>"
		Console.WriteLine($"Current date and time: {currentDateTime:U}")
		'  Fecha y hora concretas
		content &= "<h3>Specific date and time</h3>"
		Dim specificDateTime As New DateTime(2024, 3, 16, 10, 30, 0)
		content &= $"<p>Specific date and time: {specificDateTime:U}</p>"
		Console.WriteLine($"Specific date and time: {specificDateTime:U}")
		'  Sólo fecha
		content &= "<h3>Date Only</h3>"
		Dim dateOnly As DateTime = DateTime.Today
		content &= $"<p>Date only: {dateOnly:U}</p>"
		Console.WriteLine($"Date only: {dateOnly:U}")
		'  Fecha y hora en UTC
		content &= "<h3>Date and time in UTC</h3>"
		Dim utcDateTime As DateTime = DateTime.UtcNow
		content &= $"<p>Date only: {dateOnly:U}</p>"
		Console.WriteLine($"Date only: {dateOnly:U}")
		'Comparar fechas con operadores
		content &= "<h3>Compare dates with Operators</h3>"
		Dim date1 As DateTime = DateTime.Now
		Dim date2 As DateTime = DateTime.Now.AddDays(1)
		content &= $"<p>Compare date1 {date1:d}, date2 {date2:d}: {CompareDates(date1, date2)}</p>"
		Console.WriteLine($"Compare date1 {date1:U}, date2 {date2:U}: {dateOnly:U}")
		'Comparar fechas con el método de comparación
		content &= "<h3>Compare dates with Compare Method</h3>"
		content &= $"<p>Compare date1 {date1:d}, date2 {date2:d}: {CompareDatesWithCompare(date1, date2)}</p>"
		Console.WriteLine($"Compare date1 {date1:U}, date2 {date2:U}: {dateOnly:U}")
		Dim pdf = renderer.RenderHtmlAsPdf(content)
		pdf.SaveAs("outputDate.pdf") '  Guardar PDF
	End Sub
	Public Shared Function CompareDatesWithCompare(ByVal date1 As DateTime, ByVal date2 As DateTime) As String
		Dim result As Integer = date1.CompareTo(date2)
		Dim resultString As String
		If result < 0 Then
			resultString = "date1 is earlier than date2."
			Console.WriteLine(resultString)
		ElseIf result > 0 Then
			resultString = "date1 is later than date2."
			Console.WriteLine(resultString)
		Else
			resultString = "date1 is equal to date2."
			Console.WriteLine(resultString)
		End If
		Return resultString
	End Function
	Public Shared Function CompareDates(ByVal date1 As DateTime, ByVal date2 As DateTime) As String
		Dim result As String
		If CheckLessor(date1, date2) Then
			result = "date1 is earlier than date2."
			Console.WriteLine(result)
		ElseIf CheckGreater(date1, date2) Then
			result = "date1 is later than date2."
			Console.WriteLine(result)
		Else
			result = "date1 is equal to date2."
			Console.WriteLine(result)
		End If
		Return result
	End Function
	Public Shared Function CheckGreater(ByVal date1 As DateTime, ByVal date2 As DateTime) As Boolean
		Return date1 > date2
	End Function
	Public Shared Function CheckLessor(ByVal date1 As DateTime, ByVal date2 As DateTime) As Boolean
		Return date1 < date2
	End Function
End Class
VB   C#

La siguiente salida muestra el PDF generado con objetos DateTime:

objetos `DateTime` en C# (Cómo funciona para desarrolladores): Figura 3

Licencia de prueba de IronPDF

IronPDF. Proporcione un ID de correo electrónico para generar una clave de licencia que se enviará al correo electrónico que proporcionó.

"IronPDF.LicenseKey": "<Your Key>"
"IronPDF.LicenseKey": "<Your Key>"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'"IronPDF.LicenseKey": "<Your Key>"
VB   C#

Coloque la clave de licencia en el archivo AppSettings.Json.

Conclusión

los objetos DateTime en C# proporcionan una potente forma de trabajar con fechas y horas en las aplicaciones .NET. Ofrecen una amplia gama de funcionalidades para crear, manipular, formatear y comparar valores de fecha y hora. Comprender cómo utilizar eficazmente los objetos DateTime es esencial para construir funcionalidades de fecha y hora fiables y precisas en aplicaciones C#.

Al aprovechar las capacidades de los objetos DateTime, los desarrolladores pueden asegurarse de que sus aplicaciones manejan las fechas y horas correctamente, independientemente de los requisitos o escenarios específicos que encuentren.

Ya se trate de calcular duraciones, programar tareas o mostrar fechas y horas a los usuarios, los objetos DateTime desempeñan un papel crucial en muchos aspectos de la programación en C# relacionados con la gestión de fechas y horas.

< ANTERIOR
Estructuras de datos de C# (Cómo funciona para desarrolladores)
SIGUIENTE >
C# Tryparse (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123