formato - iformatprovider datetime c#
Convertir dd/mm/aaaa cadena formateada en Datetime (3)
Necesita utilizar DateTime.ParseExact
con el formato "dd/MM/yyyy"
DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Es más seguro si usa d/M/yyyy
para el formato, ya que manejará un solo dígito y dos dígitos día / mes. Pero eso realmente depende si está esperando valores de uno o dos dígitos.
Su formato de fecha day/Month/Year
podría ser un formato de fecha aceptable para algunas culturas. Por ejemplo, para Canadian Culture en-CA
DateTime.Parse
funcionaría como:
DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));
O
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread''s culture
Ambas líneas anteriores funcionarían porque el formato de la cadena es aceptable para la cultura en-CA
. Dado que no está suministrando ninguna cultura a su llamada DateTime.Parse
, su cultura actual se utiliza para el análisis que no admite el formato de fecha. Lea más sobre esto en DateTime.Parse .
Otro método para analizar es usar DateTime.TryParseExact
DateTime dt;
if (DateTime.TryParseExact("24/01/2013",
"d/M/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
{
//valid date
}
else
{
//invalid date
}
El grupo de métodos TryParse
en .NET Framework no arroja una excepción sobre los valores no válidos, sino que devuelve un valor bool
que indica éxito o falla en el análisis.
Tenga en cuenta que he usado single d
y M
para el día y el mes, respectivamente. Single d
y M
funcionan para día y mes de un solo dígito o dos dígitos. Entonces, para el formato d/M/yyyy
los valores válidos podrían ser:
- "24/01/2013"
- "24/1/2013"
- "12/04/2013" // 4 de diciembre de 2013
- "12/04/2013"
Para leer más, debería ver: cadenas de formato de fecha y hora personalizadas
Esta pregunta ya tiene una respuesta aquí:
- Convertir una cadena a DateTime 12 respuestas
Soy nuevo en DotNet y C #. Quiero convertir una cadena en formato mm/dd/yyyy
en el objeto DateTime
. Probé la función de análisis como a continuación, pero arroja un error de tiempo de ejecución.
DateTime dt=DateTime.Parse("24/01/2013");
¿Alguna idea sobre cómo puedo convertirlo a datetime?
Puede usar el formato "dd/MM/yyyy"
para usarlo en DateTime.ParseExact
.
Convierte la representación de cadena especificada de una fecha y hora en su equivalente de fecha y hora utilizando el formato especificado y la información de formato específica de la cultura. El formato de la representación de cadena debe coincidir exactamente con el formato especificado.
DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Aquí hay una DEMO
.
Para obtener más información, consulte Custom Date and Time Format Strings
use DateTime.ParseExact
string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
null
usará la cultura actual, que es algo peligrosa. Intenta proporcionar una cultura específica
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)