【发布时间】:2020-04-22 20:55:32
【问题描述】:
在我的应用程序中返回以下数据表,
+-------------+----------+------------+-------+-------+----------+
| AccountName | WaitTime | AssistTime | FName | LName | FullName |
+-------------+----------+------------+-------+-------+----------+
| XXX | 18 | 15 | Mary | Sil | |
+-------------+----------+------------+-------+-------+----------+
| YYY | 67 | 3 | Jany | Joh | |
+-------------+----------+------------+-------+-------+----------+
| ZZZ | 50 | 100 | Kate | Ham | |
+-------------+----------+------------+-------+-------+----------+
在上面的datatable、WaitTime和AssistTime数据以双值形式出现,现在我需要将WaitTime和AssistTime列格式更改为00:00:00 (hh:mm:ss)格式。所以我只写了以下代码(请注意这部分代码)。
DataTable tableone = ds.Tables[0];
tableone.Select().ToList().ForEach(row =>
{
string FirstName = Convert.ToString(row["FName"], CultureInfo.InvariantCulture);
string LastName = Convert.ToString(row["LName"], CultureInfo.InvariantCulture);
double xxx = Convert.ToDouble(row["WaitTime"]);
row.SetField("WaitTime",secondsToTime(xxx));
row.SetField("FullName", string.Format("{0} {1}", FirstName, LastName));
});
private string secondsToTime(double seconds)
{
TimeSpan t = TimeSpan.FromSeconds(seconds);
string answer = string.Format("{0:D2}:{1:D2}:{2:D2}",
t.Hours,
t.Minutes,
t.Seconds);
return answer;
}
但上面的代码给出了这个错误,
System.ArgumentException: '输入字符串不正确 格式。无法将 存储在 WaitTime 列中。预期类型是 十进制。 FormatException: 输入字符串的格式不正确。
我需要按照格式化的数据表。
+-------------+----------+------------+-------+-------+----------+
| AccountName | WaitTime | AssistTime | FName | LName | FullName |
+-------------+----------+------------+-------+-------+----------+
| XXX | 00:00:18 | 00:00:15 | Mary | Sil | Mary Sil |
+-------------+----------+------------+-------+-------+----------+
| YYY | 00:01:07 | 00:00:03 | Jany | Joh | Jany Joh |
+-------------+----------+------------+-------+-------+----------+
| ZZZ | 00:00:50 | 00:01:40 | Kate | Ham | Kate Ham |
+-------------+----------+------------+-------+-------+----------+
我该怎么做?请帮忙
【问题讨论】:
-
数据库中的时间是什么类型?它是数字还是日期对象?看起来您的代码需要一个整数 [row.SetField("WaitTime",secondsToTime(xxx));]。
-
@jdweng
WaitTime和AssistTime在数据库中是十进制值。你能告诉我你的代码[row.SetField("WaitTime",secondsToTime(xxx));]和我的代码有什么区别吗:)
标签: c# .net datatable format timespan