web-dev-qa-db-fra.com

Analyse la chaîne au format HH.mm en TimeSpan

J'utilise .NET Framework v 3.5 et je dois analyser une chaîne représentant une durée dans un objet TimeSpan.

Le problème est que le séparateur dot est utilisé à la place des deux points ... Par exemple, 13.00 ou 22.30

Je me demande donc si je dois remplacer . par : ou s'il existe un moyen plus propre de l'obtenir.

25
davioooh

Analyser la DateTime et utiliser sa propriété TimeOfDay qui est une structure TimeSpan:

string s = "17.34";
var ts = DateTime.ParseExact(s, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay;
40
Ivan G

Réponse mise à jour:

Malheureusement, .NET 3 n'autorise pas l'utilisation de formats TimeSpan personnalisés, vous devez donc effectuer quelque chose manuellement. Je ferais juste le remplacer comme vous le suggérez.

Réponse originale (s'applique à .NET 4+ uniquement):

Utilisez TimeSpan.ParseExact , en spécifiant un chaîne de format personnalisé :

var timeSpan = TimeSpan.ParseExact("11.35", "mm'.'ss", null);
9
Jon
string YourString = "01.35";

var hours = Int32.Parse(YourString.Split('.')[0]);
var minutes = Int32.Parse(YourString.Split('.')[1]);

var ts = new TimeSpan(hours, minutes, 0);
3
Darren

Pour .Net 3.5, vous pouvez utiliser DateTime.ParseExact et utiliser TimeOfDay property

string timestring = "12.30";
TimeSpan ts = DateTime.ParseExact(
                                  timestring, 
                                  "HH.mm", 
                                  CultureInfo.InvariantCulture
                                  ).TimeOfDay;
2
Habib

essayez ceci (cela a fonctionné pour moi):

DateTime dt = Convert.ToDateTime(txtStartDate.Text).Add(DateTime.ParseExact(ddlStartTime.SelectedValue, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay);

startdate sera une chaîne comme 28/02/2018 et ddlstarttime est au format HH comme 13.00

0
Linta Sheelkumar

Si le format TimeSpan est au format douze heures comme "9:00 AM", utilisez la méthode TimeSpan.ParseExact avec la chaîne de format "h: mm tt", comme ceci.

TimeSpan ts = DateTime.ParseExact("9:00 AM", "h:mm tt", CultureInfo.InvariantCulture).TimeOfDay;

Merci.

0
Obaid