Estoy trabajando en un programa que requiere la fecha de devolución de un evento. Estoy buscando una "Fecha", no un "DateTime". Tiene que haber un tipo de datos que devuelva solo la fecha ... ¿está ahí?Fecha frente a DateTime
Respuesta
No, no hay. DateTime
representa un punto en el tiempo que se compone de una fecha y una hora. Sin embargo, puede recuperar la parte de la fecha a través de la propiedad Date
(que es otra DateTime
con el tiempo configurado en 00:00:00
).
Y puede recuperar propiedades de fecha individuales a través de Day
, Month
y Year
.
Puede devolver DateTime donde la porción de tiempo es 00:00:00 y simplemente ignórelo. Las fechas se manejan como enteros de fecha y hora, por lo que tiene sentido combinar la fecha con la hora, ya que está presente en el entero de todos modos.
Desafortunadamente, no en .Net BCL. Las fechas generalmente se representan como un objeto DateTime con la hora establecida en la medianoche.
Como puedes adivinar, esto significa que tienes todos los problemas de la zona horaria asistente a su alrededor, a pesar de que para un objeto Date no deseas absolutamente ninguna gestión de zona horaria.
Usted podría intentar una de las siguientes:
DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();
Pero no hay ningún tipo "Fecha" en el BCL.
El tipo de fecha es solo un alias del tipo DateTime utilizado por VB.NET (como int se convierte en entero). Ambos tipos tienen una propiedad Date que le devuelve el objeto con la parte de hora establecida en 00:00:00.
Es cierto. [La página de documentación de MSDN para el tipo de fecha VB.NET] (http://msdn.microsoft.com/en-us/library/3eaydw6e.aspx) dice: * El tipo correspondiente en .NET Framework es el [System.DateTime] (http://msdn.microsoft.com/en-us/library/system.datetime.aspx) structure. * – miroxlav
Para esto, debe usar la fecha, pero ignore el valor del tiempo.
Ordinariamente una fecha habría un DateTime con el tiempo de 00:00:00
DateTime
El tipo tiene una propiedad que devuelve el .Date
DateTime
con el valor establecido que el anterior.
El objeto DateTime tiene una propiedad que devuelve solo la parte de la fecha del valor.
public static void Main()
{
System.DateTime _Now = DateAndTime.Now;
Console.WriteLine("The Date and Time is " + _Now);
//will return the date and time
Console.WriteLine("The Date Only is " + _Now.Date);
//will return only the date
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
Esta respuesta es incorrecta. La fecha devuelve un 'DateTime' con el tiempo configurado en 0:00:00 –
Crear una clase contenedora. Algo como esto:
public class Date:IEquatable<Date>,IEquatable<DateTime>
{
public Date(DateTime date)
{
value = date.Date;
}
public bool Equals(Date other)
{
return other != null && value.Equals(other.value);
}
public bool Equals(DateTime other)
{
return value.Equals(other);
}
public override string ToString()
{
return value.ToString();
}
public static implicit operator DateTime(Date date)
{
return date.value;
}
public static explicit operator Date(DateTime dateTime)
{
return new Date(dateTime);
}
private DateTime value;
}
y exponer lo que sea de value
desea.
implícito y explícito son incorrectos? – Behrooz
Sugeriría que su constructor establezca el [DateTime.Kind] (http://msdn.microsoft.com/en-us/library/system.datetime.kind (v = vs.110) .aspx) en ' DateTimeKind.Unspecified' para que cuando se serialice se deserialice sin convertir (puede cambiar la fecha en función de diferentes en zonas horarias). – OffHeGoes
@OffHeGoes Establece DateTime.Kind en 'DateTimeKind.Utc'. * No * configúrelo en 'DateTimeKind.Unspecified' porque eso garantizará que se serialice/deserialice con un desplazamiento de zona horaria incluido. Una fecha del calendario es la misma independientemente de la zona horaria, así que no permita que el sistema la ajuste. – Suncat2000
Creé un simple Date struct para los momentos en los que necesita una fecha simple sin preocuparse por la porción de tiempo, zonas horarias, local vs. utc, etc.
Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");
independenceDay.ToLongString(); // "Thursday, July 4, 2013"
independenceDay.ToShortString(); // "7/4/2013"
independenceDay.ToString(); // "7/4/2013"
independenceDay.ToString("s"); // "2013-07-04"
int july = independenceDay.Month; // 7
¡Gracias! Eso es útil. – garfbradaz
No hay Date
tipo de datos.
Sin embargo, puede usar DateTime.Date
para obtener solo la fecha.
E.G.
DateTime date = DateTime.Now.Date;
Hay una estructura de fecha y los objetos se pueden declarar como tipo fecha. –
@KalebAnderson no en la implementación predeterminada .NET, no hay. Si está hablando de la fecha de VB.net, todavía es un DateTime. –
'DateTime.Now.Date' es lo mismo que' DateTime.Today'. Hay un 'DateTime.UtcNow' que devuelve el valor de fecha y hora como hora universal (UTC), pero no existe un método o propiedad equivalente de UTC para Today; 'DateTimeKind.UtcNow.Date' es la expresión adecuada. – Suncat2000
public class AsOfdates
{
public string DisplayDate { get; set; }
private DateTime TheDate;
public DateTime DateValue
{
get
{
return TheDate.Date;
}
set
{
TheDate = value;
}
}
}
Poner alguna explicación a su respuesta sería útil. – Guanxi
- 1. Objeto fecha frente al objeto DateTime
- 2. Clase DateTime frente a funciones de fecha PHP nativas
- 3. DateTime a javascript fecha
- 4. DateTime Comparación: DateTime.Compare() frente a operadores relacionales
- 5. MySQL Integer frente al DateTime índice
- 6. Fecha en lugar de DateTime?
- 7. Creando DATETIME a partir de FECHA y HORA
- 8. convertir .NET DateTime objeto a objeto Javascript Fecha
- 9. Convertir DateTime a Julian Fecha en C# (ToOADate seguro?)
- 10. ¿Cómo convertir una cadena de fecha a un objeto DateTime?
- 11. Fecha del campo de fecha del Solr frente a la fecha?
- 12. Js Fecha object to python datetime
- 13. Convertir JavaScript Fecha de .NET DateTime
- 14. Cuándo utilizar VARCHAR y FECHA/DATETIME
- 15. Cómo convertir DateTime? a DateTime
- 16. MySQL GROUP BY fecha al usar datetime
- 17. mysql agregando horas a datetime
- 18. NUnit frente a MbUnit frente a MSTest frente a xUnit.net
- 19. Adición meses a DateTime con DateInterval cambia fecha original para que coincida con la nueva fecha
- 20. .NET DateTime a SqlDateTime Conversión
- 21. MySQL: Convertir INT a DATETIME
- 22. iterador frente a referencia frente a puntero
- 23. SQL convertir INT a datetime
- 24. SQL Server Convertir Varchar a Datetime
- 25. cómo convertir el hexadecimal a varchar (datetime)?
- 26. Convertir Matlab Datenum a Datetime
- 27. cadena a la conversión DateTime en C#
- 28. convertir hora utc y desplazamiento a DateTime
- 29. DateTime a unixtime sello en .net
- 30. ¿Cómo formatear DateTime a 24 horas?
Si está utilizando un valor DateTime como una fecha, establecer el tipo de UTC. No hay ajustes de zona horaria para tratar. DateTime date = DateTime.SpecifyKind (DateTime.Today, DateTimeKind, Utc); – Suncat2000
Sí, puedo decir por experiencia que usar 'date' para cualquier cosa es una mala idea a menos que esté 100% seguro de que su aplicación solo funcionará en un solo huso horario. Guardar todo como 'datetime' te ofrece lo mejor de ambos mundos, incluido el más crítico, una manera fácil de evitar pesadillas en la zona horaria si la configuración de la zona horaria de tu servidor cambia alguna vez ... y comienza a escribir datos de formas que no anticipabas. 'Datetime' puede guardarte allí,' date' no puede en absoluto, y se volverá extremadamente difícil de corregir si alguna vez comienzas a escribir 'date' con el contexto de la zona horaria equivocada. – Kelseydh