Мне нужен новый столбец в моем datatable, который имеет преобразованную метку времени. Мой стол выглядит как..
BuildId unixTimeStamp BuildDate
1 1401286554000 -
2 1401286554000 -
3 1401286554000 -
новый столбец BuildDate должен быть вычислен с использованием приведенной ниже формулы
dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
как я могу добиться того же? Пытались сделать то же самое, используя
workTable.Columns["BuildDate"].Expression ="dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime()";
Получите следующую ошибку
The expression contains undefined function call dtDateTime.AddSeconds().
Я думаю, что невозможно использовать любую функцию DateTime в DataColumn.Expression. (https://msdn.microsoft.com/de-de/library/system.data.datacolumn.expression%28v=vs.110%29.aspx) Так что я бы не пробовал это с выражением, но с циклом
foreach (DataRow dr in workTable.Rows)
dr["BuildDate"] = new DateTime(1970, 1, 1,0,0,0).AddSeconds(int.Parse(dr["unixTimeStamp"].ToString()));
Попробуйте изменить
workTable.Columns["BuildDate"].Expression ="dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime()";
в
workTable.Columns["BuildDate"].Expression = "new DateTime(2010, 10, 10, 10, 10, 10).AddSeconds(double.Parse(unixTimeStamp)).ToLocalTime()";
Я предполагаю, что вы используете hardcoded значение для dtDateTime. Также unixTimeStamp
должен быть double
, он взорвется, если его string
, вы можете попробовать.