.5
あなたのコードはビットを考慮していません(小数点z
のない部分だけを処理します)。+5
修正版:
DateTime time = XmlConvert.ToDateTime("2013-11-08T08:08:32+5.5", "yyyy-M-dTH:m:sz.f");
アップデート
コメントを介してdigEmAllによって正しく指摘されているように、提案された.f
修正は問題を回避しますが、日付は適切に考慮されていません. 修飾子は、.f
(この場合のように) 秒から離れた位置にある場合でも、常に秒の端数を参照します。の分数は、修飾子にz
依存し、に変換して提供する必要があります。:
z
zzz
したがって、前述のコードは、正確な結果を提供しませんが、OP の条件 (技術的に言えば、入力として間違った日付形式を使用する) の実用的なソリューションを表しています。そのためには、入力形式を事前に変更する必要があります。つまり、次のようになります。
string input = "2013-11-08T08:08:32+5.5";
string format = "yyyy-M-dTH:m:sz";
string correctedInput = input;
string correctedFormat = format;
string[] temp = input.Split('.');
if (temp.Length == 2 && temp[1].AsEnumerable().Select(x => char.IsDigit(x)).Count() == temp[1].Length)
{
correctedInput = temp[0] + ":" + Convert.ToString(Math.Round(60 * Convert.ToDecimal(temp[1]) / 10, 2));
correctedFormat = "yyyy-M-dTH:m:szzz";
}
DateTime time = XmlConvert.ToDateTime(correctedInput, correctedFormat);