2010-07-13 5 views
3

Dans mon C# Data Access Layer ... Je récupère un dataset d'Excel ... et il y a un champ excel excel qui retourne la date au format: 20090701. J'ai besoin que ceci soit converti en C# DateTime. Quelle est la meilleure façon de le faire?Format décimal Excel en C# DateTime

Répondre

4
DateTime.ParseExact(value.ToString(), "yyyymmdd"); 

La méthode ParseExact vous permet de spécifier la chaîne de format pour la date/heure vous convertissez. Dans votre cas: une année à quatre chiffres, puis un mois à deux chiffres, puis un jour à deux chiffres du mois.

0

Je ferais quelque chose comme ceci si vous voulez l'implémenter à l'échelle de l'application.

System.Globalization.CultureInfo cultureInfo = 
      new System.Globalization.CultureInfo("en-CA"); 
     // Defining various date and time formats. 
     dateTimeInfo.LongDatePattern = "yyyyMMdd"; 
     dateTimeInfo.ShortDatePattern = "yyyyMMdd"; 
     dateTimeInfo.FullDateTimePattern = "yyyyMMdd"; 
     // Setting application wide date time format. 
     cultureInfo.DateTimeFormat = dateTimeInfo; 


    // Assigning our custom Culture to the application. 
    //Application.CurrentCulture = cultureInfo; 
    Thread.CurrentThread.CurrentCulture = cultureInfo; 
    Thread.CurrentThread.CurrentUICulture = cultureInfo; 

DateTime.Parse(excelDate); 
0

Et une réponse moins intuitive pour une bonne mesure.

var a = 20090701m; 
var b = a/10000; 
var year = (int)b; 
var c = (b - year) * 100; 
var month = (int)c; 
var day = (int)((c - month) * 100); 
var dt = new DateTime(year, month, day);