MICROsouffle

Articles avec #c tag

C# .Net : Tester un numérique rendu nullable.

27 Mars 2020 , Rédigé par Antoine SEJALON Publié dans #c, #Asp.net, #Astuces

voici la bonne pratique pour tester la valeur null d'un double par exemple.

Le type double par défaut n'est pas nullable. L'ajout d'un point d’interrogation juste après "double" permet de lui assigner une valeur nulle (ex : double? mondouble = null;).

Tester la valeur null :

Une des premières façon de procéder pourrait être de créer un if qui test le null comme suit.

if(mondouble != null){}

Le fait de faire ceci implique que l’opération va aller chercher dans la surcharge de double qui le rend nullable pour au final tester 'mondouble.HasValue' non disponible dans un double non nullable.

Bonne pratique :

De ce fait i est fortement indiqué de passer directement par cette dernière méthode.

double? monDouble = null;

string reponse = (mondouble.HasValue) ? "Non null" : "null";

 

Bon code et bonne journée à vous =)

Lire la suite

C# : Recuperer le numéro de la semaine en cours.

18 Octobre 2016 , Rédigé par Antoine SEJALON Publié dans #c, #Asp.net

Bonjour, bienvenue dans ce tuto. Je vais vous expliquer comment récupérer le numéro de la semaine en langage C#. DateTime ne nous permettant pas de le récupérer directement, nous allons utiliser la fonction GetWeekOfYear de CultureInfo.CurrentCulture.Calendar comme suit :

int num_semaine = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);

DateTime.Now : recupere la date du jour en cours.

DayOfWeek : Définit quel est le premier jour de la semaine.

CalendarWeekRule.FirstFullWeek : est la valeur qui définit une semaine. Trois possibilités :

FirstDay : La premiere semaine de l’année commence le premier jour de l’année et fini le dernier jour de la semaine en cours. Ex : si le 1er janvier est un jeudi et que vous avez mis DayOfWeek à lundi, la première semaine ira du jeudi 1er au dimanche 4 Janvier.

FirstFourDayWeek : La première semaine de l’année est la première semaine de l’année disposant d’au moins 4 jours avant le dernier jour de celle-ci. Ex :

Si ma première semaine commence un mardi et que j’ai mis comme premier jour de la semaine le lundi, j’ai bien plus de 4 jours du mardi 1er au dimanche 6 Janvier. Ce sera donc ma première semaine.

A l’inverse, si le 1er janvier est un vendredi, je n’ai que 3 jours entre le vendredi 1er et le dimanche 3 janvier. Ma première semaine sera donc du lundi 4 janvier au dimanche 10 janvier.

FirstFullWeek : Comme son nom l’indique, la première semaine de l’année est la première semaine pleine. Ex : Le 1er janvier est un mercredi, ce qui fait que si l’on met comme premier jour de la semaine un lundi, la première semaine sera celle du lundi 6 janvier au dimanche 12 janvier.

Merci d'avoir suivi cette astuce et bon code =)

C# : Recuperer le numéro de la semaine en cours.
Lire la suite

C# TimeStamp : comment passer de timestamp à datetime (fuseau horaire compris).

26 Avril 2016 , Rédigé par Antoine SEJALON Publié dans #C

C# TimeStamp : comment passer de timestamp à datetime (fuseau horaire compris).

Bonjour, aujourd'hui je vais vous présenter une des solutions pour obtenir une datetime à partir d'un timestamp unix.

Nous allons avoir un timestamp (long) : 1460379633 //qui représente le 11/4/2016 à 15:00:33

Pour prendre en compte le fuseau horaire, il faut déjà le définir (pour le fuseau Europe j'utilise l'id "E. Europe Standard Time"). Vous pouvez bien sur rechercher les différents ids disponibles. liste d'aide pour les timezoneids : ici

Voici le code :

TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("E. Europe Standard Time");

Nous allons ensuite appeler une methode de conversion du timestamp :

var dateTime = ConvertFromUnixTimestamp(timestamp);

Voici la methode à créer :

static DateTime ConvertFromUnixTimestamp(double timestamp) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);//on recupere la date zero de référence : le 1/1/1970 00:00:00 return origin.AddSeconds(timestamp);//on ajoute le timestamp (nombre de secondes depuis la date zero) }

dateTime est alors égal à 11/4/2016 à 13:00:33. Le fuseau horaire n'ayant pas encore été pris en compte, il y à un décalage de deux heure dans mon cas.

Pour y remédier, nous allons utiliser la variable timeZoneInfo défini plus haut pour gérer le décalage du fuseau horaire.

 

DateTime dateTimeEurope = dateTime.Add(tzi.BaseUtcOffset);

dateTimeEurope vos alors 11/4/2016 à 15:00:33.

 

Cette méthode peut être améliorée avec notamment une détection automatique par code du fuseau horaire de la machine qui l'exécute.

 

A bientôt et bon code.

Lire la suite