Question

S'il vous plaît, corrigez-moi si je me trompe, mais l'analyse des dates aa / aaaa / mm / jj (ou d'autres formats spécifiques) en C # devrait être aussi simple que

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

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

Existe-t-il une méthode conviviale avec app.config pour ne pas avoir à le faire à chaque fois?

DateTime.ParseExact(theDate, "yyyy/MM/dd", new CultureInfo("en-CA", true));
Était-ce utile?

La solution

L'argument IFormatProvider peut être null.

Autres conseils

ParseExact a besoin d’une culture: considérez "aaaa MMM jj". MMM sera un nom de mois localisé qui utilise la culture actuelle.

Utilisez la culture d'application actuelle:

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

Vous pouvez définir la culture de l'application dans le fichier app.config à l'aide de la balise Globalization. Je pense.

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));
}

Le fournisseur de format est nécessaire pour déterminer les symboles et les chaînes de date et d'heure (tels que les noms des jours de la semaine dans une langue donnée). Vous pouvez utiliser une valeur null, auquel cas l'objet CultureInfo correspondant à la culture actuelle est utilisé.

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

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

Vous pouvez également utiliser la classe Convert

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

// Convertir la date au format compatible MySql

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

string datevalue = DateValue.ToString ("aaaa-MM-jj");

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top