28

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

問題は、コロンの代わりにドット区切り文字が使用されていることです...たとえば13.00、または22.30

だから私はこれを交換.する:必要があるのか​​、それともこれを取得するためのよりクリーンな方法があるのか​​疑問に思っています。

4

6 に答える 6

48

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

string s = "17.34";
var ts = DateTime.ParseExact(s, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay;
于 2012-09-19T11:06:13.997 に答える
10

更新された回答:

残念ながら、.NET 3ではカスタムTimeSpan形式を使用できないため、手動で何かを行う必要があります。私はあなたが提案するようにただ取り替えをするでしょう。

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

カスタムフォーマット文字列TimeSpan.ParseExactを指定して、を使用します。

var timeSpan = TimeSpan.ParseExact("11.35", "mm'.'ss", null);
于 2012-09-19T11:03:41.767 に答える
4
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);
于 2012-09-19T11:03:19.783 に答える
2

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

string timestring = "12.30";
TimeSpan ts = DateTime.ParseExact(
                                  timestring, 
                                  "HH.mm", 
                                  CultureInfo.InvariantCulture
                                  ).TimeOfDay;
于 2012-09-19T11:12:29.147 に答える
2

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

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

ありがとう。

于 2018-10-01T16:11:50.780 に答える
0

これを試してみてください(それは私のために働いた):

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

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

于 2018-02-02T11:11:15.110 に答える