2011-03-07 12 views
22

He estado trabajando en asp.net 3.5.Quiero convertir un DateTime Datos de sqldatareader a una cadena en formato "dd-MM-yyyy". Pero cuando se utiliza "dd-MM-yyyy" parámetro de formato como "rdMonthlyLeave["LEAVE_DATE"].ToString("dd-MM-yyyy")" vuelve navegador error de compilación como'Sin sobrecarga para el método' ToString 'toma el error' 1 'arguments' Al formatear Fecha y hora Campo a cadena EN el formato "dd-MM-aaaa"

compilador Mensaje de error: CS1501: No hay sobrecarga para el método 'ToString' toma argumentos '1'

¿Tiene una solución de ?

Respuesta

44

Es necesario echarlo a DateTime primera:

DateTime leave = (DateTime) rdMonthlyLeave["LEAVE_DATE"]; 
DoSomethingWith(leave.ToString("dd-MM-yyyy")); 

o simplemente

((DateTime)rdMonthlyLeave["LEAVE_DATE"]).ToString("dd-MM-yyyy") 

El tipo de retorno del indexador DataReader es sólo object y object no tiene una sobrecarga de ToString que toma una cuerda. No olvide que la sobrecarga de es una decisión en tiempo de compilación: el compilador elige el método apropiado con una firma compatible, y solo reemplaza a según el tipo de tiempo de ejecución. En este caso, es sin sobrecarga de ToString con una firma compatible, por lo que obtiene un error en tiempo de compilación.

+0

Acabo de toparme con este problema en el que tuve que lanzar una propiedad a pesar de que era del tipo 'DateTime' - pero era anulable (' DateTime? MyDate') – jbyrd

Cuestiones relacionadas