2008-09-15 31 views
5

Quelqu'un s'il vous plaît corrigez-moi si je me trompe, mais en analysant un aaaa/MM/jj (ou d'autres formats spécifiques) dates en C# devrait être aussi facile commeAnalyser les dates exactes en C# ne devrait pas vous obliger à créer un IFormatProvider

DateTime.ParseExact(theDate, "yyyy/MM/dd"); 

mais non, C# vous oblige à créer un IFormatProvider.

Existe-t-il un moyen convivial de configurer app.config, donc je n'ai pas besoin de le faire à chaque fois?

DateTime.ParseExact(theDate, "yyyy/MM/dd", new CultureInfo("en-CA", true)); 

Répondre

14

L'argument IFormatProvider peut être nul.

+0

À partir des documents MSDN: «Si le fournisseur est une référence null (Nothing en Visual Basic), l'objet CultureInfo qui correspond à la culture en cours est utilisé. –

+0

Je me rends compte que je n'aurais pas dû impliquer que app.config devait être utilisé. Vous avez obtenu ce que je voulais - "juste analyser la date et ne me dérange pas avec des choses que je ne me soucie pas". Merci. – AlanR

3

Créer une méthode d'extension:

public static DateTime ParseExactDateTime(this string dateString, string formatString) { 
    return DateTime.ParseExact(dateString, formatString, new CultureInfo("en-CA", true)); 
} 
+0

Merci Will. Je ne pensais pas vraiment que l'on traversait très bien. –

5

Utilisez la culture de l'application actuelle:

DateTime.ParseExact("2008/12/05", "yyyy/MM/dd", System.Globalization.CultureInfo.CurrentCulture); 

Vous pouvez définir la culture d'application dans le app.config en utilisant la balise de mondialisation. Je pense.

1

Vous pouvez également simplement créer le IFormatProvider une fois et le stocker pour une utilisation ultérieure.

1

Vous pouvez également utiliser la classe Convert

Convert.ToDateTime("2008/11/25"); 
6

ParseExact a besoin d'une culture: envisager "yyyy dd MMM". MMM sera un nom de mois localisé qui utilise la culture actuelle.

3

Il nécessite le fournisseur de format afin de déterminer les symboles et les chaînes de date et d'heure particuliers (tels que les noms des jours de la semaine dans une langue particulière). Vous pouvez utiliser une valeur null, auquel cas l'objet CultureInfo correspondant à la culture en cours est utilisé.

Si vous ne souhaitez pas avoir à le spécifier à chaque fois, créez une méthode d'extension qui transmet null ou CultureInfo ("en-CA", true) en tant que fournisseur de format.

0

// Convertir date MySql format compatible

DateTime DateValue = Convert.ToDateTime (datetimepicker.text);

chaîne datevalue = DateValue.ToString ("aaaa-MM-jj");

0

Qu'est-ce qui ne va pas avec l'utilisation de Globalization.CultureInfo.InvariantCulture?

+0

Rien, juste ne veux pas jeter mon code w/il depuis la mondialisation n'est pas un sujet de préoccupation dans notre boutique. – AlanR