Cómo convertir "doble" a "fecha y hora" entre Excel y c #

Tengo un programa c # que necesita crear un objeto de Excel y hacer algunas operaciones, aquí hay partes de mi código:

// c# code:

workSheet.Cells[1, 1] = "=2012/9/20";       //asign "2012/9/20" to cell[1,1] in Excel
double d = workSheet.Cells[1, 1].value();   // by default, Excel will return 11.17
Debug.Print(d.ToString());                  //c#:  d = 11.1777777777778

Entonces, ¿cómo hacer que la salida se convierta en "2012/9/20" de nuevo?

He probado algunos códigos, pero fallan:

DateTime str = DateTime.FromOADate(d);     //c#: str = 1/10/1900 4:16:00 AM
DateTime str = new DateTime((long)d);      //c#: str = 1/1/0001 12:00:00 AM

Respuestas a la pregunta(4)

Su respuesta a la pregunta