Définir le format DateTime

J’ai le code suivant –

DateTime timeStamp; timeStamp = System.Convert.ToDateTime(y.InnerText); 

y.InnerText est le 11/03/2013 11:35:24 .

Cependant, cela brise ma déclaration d’importation car la firebase database recherche le format –

 2013-03-11 11:35:24 

Comment définir le format de l’object DateTime?

Comment définir le format de l’object DateTime?

Tu ne peux pas. DateTime valeurs DateTime n’ont pas de format, pas plus que les valeurs int ou double . Lorsque vous souhaitez les convertir en / à partir de chaînes, vous devez spécifier les informations de formatage.

Au lieu de cela, vous devez utiliser le SQL paramétré et éviter de reconvertir la valeur DateTime en une chaîne. Il s’agit d’une bonne pratique générale – n’incluez pas de valeurs dans votre chaîne SQL; SQL paramétré présente de nombreux avantages:

  • Il évite les attaques par injection SQL
  • Il évite les problèmes de conversion comme celui-ci
  • Il garde votre code (SQL) séparé de vos données (valeurs de paramètre)

Je suggérerais également qu’au lieu d’utiliser Convert.ToDateTime , vous spécifiez le format attendu lors de l’parsing. Par exemple:

 timeStamp = DateTime.ParseExact(y.InnerText, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

Fondamentalement, les deux règles que j’essaie d’appliquer sont les suivantes:

  • Évitez d’effectuer des conversions inutiles. Si vous veillez à ce que chaque système utilise les types de données appropriés dans la mesure du possible, vous n’avez souvent pas besoin de convertir du tout.
  • Lorsque vous avez besoin de convertir des représentations sous forme de chaîne, utilisez des explications très précises sur la représentation que vous souhaitez utiliser / produire. Pour les valeurs lisibles par machine, cela devrait généralement utiliser la culture invariante et éventuellement un format de date / heure personnalisé. Pour les valeurs lisibles par l’homme, il convient généralement d’utiliser la culture de l’utilisateur et un format de date / heure standard.

si vous passez datetime à la firebase database SQL, essayez avec le format yourdatetime.ToSsortingng (“aaaa / MM / jj”), cela fonctionnera pour vous.

et encore une chose que vous pouvez append un format date / heure pour votre culture Applicaton. ceci traitera donc le format de date et heure à votre guise.

 using System; using System.Globalization; using System.Threading; namespace test { public static class Program { public static void Main() { CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone(); culture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd HH:mm:ss"; culture.DateTimeFormat.LongTimePattern = ""; Thread.CurrentThread.CurrentCulture = culture; Console.WriteLine(DateTime.Now); } } } 

J’utilise cette étape 1. Convertir en DateTime. 2. Utilisez ToSsortingng (); une fonction

Exemple :

  DateTime myDateTime = DateTime.Now; ssortingng myDateTimeSsortingng = myDateTime.ToSsortingng("yyyy-mm-dd hh:mm:ss"); 

vous pouvez utiliser la conversion ToSsortingng en 2013-03-11 11:35:24

  DateTime timeStamp; timeStamp = System.Convert.ToDateTime(y.InnerText).ToSsortingng("yyyy-MM-dd HH:mm:ss"); 

Fondamentalement, Date n’a pas de format. Si le parameter/field la firebase database est de Datetime type parameter/field Datetime type vous devriez passer comme type Date . Ce n’est pas une bonne idée de passer la date comme une chaîne.

Toutefois, si vous devez traiter ce problème, il est préférable de passer la date dans un none culture specific date format (ISO8601 ou ISO) dans une requête paramétrée. Sinon, vous pourriez avoir des problèmes avec les serveurs de firebase database dans des parameters de culture différents.

Par exemple, pour le serveur SQL, il est sûr ( en cours de conversion ) de transmettre l’heure de la date dans ISO8601 en tant que;

 'yyyy-mm-ddThh:mi:ss.mmm' //(no spaces) 

Et si vous substituez simplement votre méthode ToSsortingng () à votre object DateTime? Ne pourriez-vous pas alors choisir le format que vous souhaitez et chaque fois que vous l’utiliserez, il sera formaté comme vous le souhaitez sans que cela vous dérange.

C’est juste une pensée donc je ne sais pas s’il y a de meilleures solutions ou pas.

Vous pouvez ensuite utiliser les propriétés année, mois, jour pour le construire à votre guise. Quelque chose comme:

 public override ToSsortingng(){ return this.Year + "-" + this.Month + "-" + this.Day; } 

Salutations