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