web-dev-qa-db-ja.com

文字列をHH.mm形式でTimeSpanに解析します。

私は。NET Framework v 3.5を使用しており、タイムスパンを表す文字列をTimeSpanオブジェクトに解析する必要があります。

問題は、コロンの代わりにドットセパレータが使用されることです...たとえば、13.00、または22.30

だから私は.:に置き換える必要があるのか​​、これを取得するよりクリーンな方法があるのか​​と思っています。

26
davioooh

DateTimeを解析し、TimeOfDay構造体であるTimeSpanプロパティを使用します。

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

更新された回答:

残念ながら、.NET 3ではカスタムTimeSpan形式の使用が許可されていないため、手動で何かを行う必要があります。あなたが提案するように私は単に置き換えを行います。

元の回答(.NET 4+のみに適用):

使用する - TimeSpan.ParseExactカスタム書式文字列 を指定:

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

。Net 3.5の場合、DateTime.ParseExactを使用し、 TimeOfDay プロパティを使用できます。

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

TimeSpan形式がこの「9:00 AM」のような12時間形式の場合、次のように、形式文字列「h:mm tt」でTimeSpan.ParseExactメソッドを使用します。

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

ありがとう。

1
Obaid

これを試してください(私にとってはうまくいきました):

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

startdateは28/02/2018のような文字列で、ddlstarttimeは13.00のようなHH形式です。

0