Convertir a Formato #yyyy/mm/yy#

27/07/2006 - 14:11 por Don Quijote de Nicaragua | Informe spam
Hola chicos Tengo un problema con las fechas y los formatos, quiero darle el
siguiente formato"#yyyy/mm/yy#", sin embargo me envia el siguiente mensaje
de error:
"Unable to cast object of type 'System.String' to type
'System.IFormatProvider'."

Dim strCadena1 As String = "01/06/2006"
Dim Fecha1 As Date = strCadena1.ToString("#yyyy/mm/dd#") 'AQUI ENVIA MENSAJE
DE ERROR

Alguna idea, de que estoy haciendo mal.

Saludos.

Don Quijote de Nicaragua.
Elder Soto
 

Leer las respuestas

#1 Don Quijote de Nicaragua
27/07/2006 - 15:00 | Informe spam
Excelente muchas gracias a ambos, me ha quedado Muy Claro.
Gracias.
Don Quijote de Nicaragua.
Elder Soto.

"Alberto Poblacion"
escribió en el mensaje news:
"Don Quijote de Nicaragua" wrote in message
news:
Hola chicos Tengo un problema con las fechas y los formatos, quiero darle
el siguiente formato"#yyyy/mm/yy#", sin embargo me envia el siguiente
mensaje de error:
"Unable to cast object of type 'System.String' to type
'System.IFormatProvider'."

Dim strCadena1 As String = "01/06/2006"
Dim Fecha1 As Date = strCadena1.ToString("#yyyy/mm/dd#") 'AQUI ENVIA
MENSAJE DE ERROR

Alguna idea, de que estoy haciendo mal.



Si miras el manual en linea de la clase System.String (que se
corresponde con tu strCadena1), observarás que entre los métodos
disponibles, la única sobrecarga existente de la función ToString que toma
1 parámetro está definida asi:
String.ToString (IFormatProvider)
Como has pasado como argumento "#yyyy/mm/dd#", que es un string, el
compilador intenta convertir dicho string al tipo del parámetro, que es
IFormatProvider, cosa que no se puede hacer (ni la clase String ni la
clase IFormatProvider disponen de una conversión implícita a la otra
clase).

Conclusión: Estás equivocado en cuanto a la forma en la que crees que
funciona el método ToString de la clase String.

Incluso aunque funcionara, te encontrarías con otros dos errores en tu
código: El primero es que "#yyyymmdd#" es un formato para variables de
tipo fecha, pero se lo estás aplicando a un string. El segundo es que el
resultado de aplicar un formato es un string, y lo estás intentando meter
en una variable de tipo fecha, cosa que en general no es correcta, a pesar
de que el VB te lo consienta mientras tengas el "Option Strict" a False
(cosa que no es recomendable porque entonces el compilador se "traga"
estos errores en lugar de avisarte para que los corrijas).

Si lo que quieres es tomar una variable de tipo fecha (que NO tiene
ningún formato, se almacena en binario) y convertirla a un string en
formato "#yyyy/mm/dd#", puedes hacerlo asi:

Dim fecha as DateTime = new DateTime(2006,6,1)
Dim strCadena as String = fecha.ToString("#yyyy/MM/dd#")

Observa que el ToString de la clase DateTime sí que acepta un string, a
diferencia del ToString de la clase String.
Observa también que MM va en mayúsculas si quieres que salga el mes. En
minúsculas representa los minutos.






Preguntas similares