Pregunta

DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);

txtdatumdokum.text es como "09.09.2011".

Pero recibo un error de FormateXception. ¿Debo analizar la fecha?

¿Fue útil?

Solución

Pruebe DateTime.ParseExact con el dd.mm.yyyy Formato de cadena

 DateTime.ParseExact(txtDatumDokum.Text, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None);

Otros consejos

No es bueno ver, de todos modos, intente esto:

string s = "09.09.2011";
DateTime dt = Convert.ToDateTime(
    s.Replace(".",
    new System.Globalization.DateTimeFormatInfo().DateSeparator));

Tienes que decirnos por qué La entrada de texto está utilizando este formato. Si es porque el usuario lo ingresa de esta manera, entonces debe asegurarse de que el formato coincida con Thread.CurrentCulture.DateTimeFormat.ShortDatePattern. Cambiar la cultura (estableciendo Thread.CurrentCulture) a un valor apropiado resolverá su problema.

Si se supone que debe analizar la entrada, sin importar en qué formato se encuentre, entonces deberá hacer un procesamiento manual primero (tal vez elimine los espacios y otros caracteres delimitadores de la entrada con string.Replace) y luego intente analizar la fecha usando DateTime.ParseExact y una cadena de formato conocida.

Pero todo depende de por qué La entrada tiene ese formato y por qué la cultura actual de su aplicación no lo coincide.

Puede probar esto, TryParse evita las excepciones de análisis ... entonces solo necesita verificar el resultado para asegurarse de que se analizara.

DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, out datuMDokumenta);

Tendrá que determinar si esta es una buena solución para su aplicación.

Ver este ejemplo:http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

A juzgar por la fecha que le dio, debe incluir una cultura, DE-DE ACEPTA 01.01.11 Tipo de fechas, pero no estoy seguro de cuál es el que realmente desea usar, deberá decidir que ... el código se verá como esto:

using System.Globalization;

DateTime datuMDokumenta;
bool result = DateTime.TryParse(txtDatumDokum.Text, CultureInfo.CreateSpecificCulture("de-DE"), DateTimeStyles.None, out datuMDokumenta);

Aquí se puede encontrar una lista de culturas, seleccione el apropiado para usted:http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.71%29.aspx

La ventaja aquí es que este código es un poco más de trabajo, pero es muy difícil de romper. Suponiendo que está utilizando una entrada de texto gratuita en un cuadro de texto, no desea lanzar excepciones.

Sí, debe analizar la fecha de entrada en la cultura actual.

string[] format = new string[] { "dd.MM.yyyy" };
string value = "09.09.2011";
DateTime datetime;

if (DateTime.TryParseExact(value, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault, out datetime))
      //Valid
else
     //Invalid

DateTime dt = convert.todateTime (txtdatumdokum.text)

Es correcto ... no hay isssue

Durante una llamada de deserialización bajo el marco compacto 3.5, he tenido algún comportamiento inesperado antes.

He convertido de usar las clases de serialización OpenNetCF a la clase de serialización XML Framework. Al hacerlo, el formato de tiempo predeterminado ha cambiado y el orden de propiedad/miembros públicos. Tan larga historia, he expuesto una propiedad de texto que convierte mi fecha de regreso al formato que espera mi aplicación VB6.

            Dim dumbDate As New Date
            Dim formats() As String = {"yyyy-MM-ddTHH:mm:ss.fffzzz", _
                                       "yyyy-MM-dd HH:mm:ss:fffffffzzz"}

            _datetimeTaken = dumbDate.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)

            ' There is something wrong with compact framework during the Serialization calls. 
            ' calling the shared method Date.Parse or Date.ParseExact does not produce the same
            ' result as calling a share method on an instance of Date. WTF?!?!?!
            ' The below will cause a "Format" exception.
            '_datetimeTaken = Date.ParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)

Date.Blah no funciona. Dumbdate.Blah funciona. extraño.

tu codigo:

DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum.Text);

Intenta cambiar esto a:

DateTime datuMDokumenta = Convert.ToDateTime(txtDatumDokum);

y cuando imprimes el date/time

Imprimir datumDokumenta.text

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top