5

XElement を解析して、xml から日付と時刻の文字列を取得します。日付と時刻の値は、それぞれ および によって取得され file.Element("Date").Valueますfile.Element("Time").Value

Date 値を取得した後、DateTime 変数に解析します

DateTime dt,ts;
dt = file.Element("Date").Value; // the value is say 12/29/2012

そして、この dt 値が xaml UI の datepicker 値に設定されます

datepicker.Value = dt;

xml から取得した Time 値によって値を設定する必要があるタイムピッカーもあります。タイムピッカーの値を設定するには、次のようにします。3 つの文字列を宣言します。次のように言います。

string a = file.Element("Time").Value; // the value is say 9:55 AM
string b = file.Element("Time").Value.Substring(0, 5) + ":00"; // eg 9:55:00
string c = file.Element("Time").Value.Substring(5); // the value is ' AM'

次に、日付値と文字列「b」および「c」を連結します

string total = file.Element("Date").Value + " " + b + c;

の値はtotal「12/29/2012 9:55:00 AM」になりました

次に、このtotal文字列を DateTime に解析しようとしましたが、formatexception がスローされます

DateTime.Parse(total, CultureInfo.InvariantCulture);

助けていただければ幸いです...

4

3 に答える 3

8

DateTime.ParseExactをお試しください

var dateStr = "12/29/2012 09:55:00 AM";
DateTime date = DateTime.ParseExact(dateStr,"MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);

ここでデモ。

フォーマット文字列の詳細については、 C#DateTimeフォーマットをお読みください。

時間の部分に0を追加したことに注意してください。2桁である必要があります。そうでない場合、フォーマット例外が発生します。

于 2012-12-29T07:36:11.643 に答える
0

使用してみてください: DateTime.ParseExact

string total = '12/29/2012 9:55:00 AM'; 
string format = "MM/dd/yyyy H:mm:ss tt";
DateTime dateTime = DateTime.ParseExact(dateString, format,
        CultureInfo.InvariantCulture);
于 2012-12-29T07:33:44.170 に答える
0

私はこれに対する解決策を持っています。datepicker を XML 形式で保存しようとすると、timepicker の値を XMLElement として ValueString として保存していたため、文字列に変換すると常にエラーがスローされました。そこで、XML 形式で Value.ToString() として保存しました。これで、文字列から日付または時刻に相当するものに正しく変換できるようになりました。

于 2013-04-23T07:28:09.493 に答える