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

Preguntas similare

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.






Respuesta Responder a este mensaje
#2 Guillermo guille
27/07/2006 - 21:36 | Informe spam
Los formatos de fechas o de horas solo puedes darlos desde variables de tipo
Date (o DateTime), y lo que estás haciendo es dárselo a un String.
En tu caso, usar Date.Parse(strCadena1) para asignar ese valor, y después
con la variable Fecha1 puedes usar el ToString con el formato en el que
quieras recuperar la fecha que contiene esa variable.

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Mentor Asociado de Solid Quality Learning Iberoamericana

Te invito a mi sitio: http://www.elguille.info/
Resuelve tus dudas en: http://foros.elguille.info/

"Don Quijote de Nicaragua" escribió en el
mensaje 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.

Saludos.

Don Quijote de Nicaragua.
Elder Soto






Respuesta Responder a este mensaje
#3 Alberto Poblacion
27/07/2006 - 21:39 | Informe spam
"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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida