문제
내가 노력으로 모든 변환 DateTime 에서 값 DataTable 하는 문자열입니다.여기에 나가 사용하는 방법:
private static void ConvertDateTimesToStrings(DataTable dataTable)
{
if (dataTable == null)
{
return;
}
for (int rowIndex = 0; rowIndex < dataTable.Rows.Count; rowIndex++ )
{
for (int i = 0; i < dataTable.Columns.Count; i++)
{
DateTime dateTime;
try
{
dateTime = (DateTime)dataTable.Rows[rowIndex][i];
}
catch (InvalidCastException)
{
continue;
}
dataTable.Rows[rowIndex][i] = dateTime.ToString("dd.MM.yyyy hh:mm:ss");
}
}
}
이 라인에 작동합니다:
dataTable.Rows[rowIndex][i] = dateTime.ToString("dd.MM.yyyy hh:mm:ss");
내가 값을 확인 dataTable.행[rowIndex][i]고 그것은 여전히 날짜/시간,문자열이 아닙니다.왜 이런 일이 일어나고 어떻게 해결할 수 있는 이?
편집:나는이 작업을 수행하기 위해 노력하고 있기 때문에 나는 싸움 api 과 불행하게도 나는 선택이 있는 구성 요소를 사용합니다.
해결책
열 데이터 유형이 날짜 시간이고 값을 다시 저장할 때 값을 DATETIME로 다시 복귀하고 있다고 결정했을 수 있습니다.
이것을 시도해보십시오 ... 데이터 가능에서 typeof (string)로 새 열을 만들고 문자열 값을 해당 열에 저장하십시오. 모든 값이 복사되면 날짜 시간 열을 삭제하십시오.
다른 팁
이것은 단순히 일하지 않을 것이기 때문에,당신 변경하지 않은 밑에 깔 데이터를 입력합니다.
당신이 categories 테이블과 열이있는 데이터 입력 날짜/시간입니다.
에 할당할 수 있는 문자열을 그것은,그러나 그것이 다시 변환하는 날짜/시간입니다.
왜 당신은 그것을 변경하려면 포맷된 문자열?할 수 없는 형식으로 필요하신 경우에만 표시하며,손잡이로 날짜/시간이 있을 때까지를 디스플레이는 무엇입니까?
업데이트: 그것은 또한 더 나은 확인 하는 경우 열의 유형을 시도하기 전에 변환,그것은 속도가 훨씬 빨라질 수 있습니다:
if (dataTable.Columns[0].DataType == typeof(DateTime))
{
}
그것은 작동하지 않을 것 때문에 데이터 형식의 컬럼은 여전히 DateTime 고 그것을 변환할 문자열에 다시 날짜/시간입니다.나는 제안하는 형식으로 날짜를 문자열을 생성할 때 API 메시지입니다.당신은 여전히 필요로하는 경우를 생성하는 문자열에 대한 열 값 datetime
foreach (DataColumn column in dataTable.Columns) {
if (column.DataType == typeof(DateTime)) {
dataTable.Columns.Add(column.ColumnName + "_string", typeof(string));
}
}
foreach (DataRow row in dataTable.Rows) {
foreach (DataColumn column in dataTable.Columns) {
if (column.DataType == typeof(DateTime)) {
row[column.ColumnName + "_string"] = row[column.ColumnName].ToString("dd.MM.yyyy hh:mm:ss");
}
}
}
다음을 제거할 수 있습니다 모든 DateTime 열 또는 사용 dataTable.Select()을 얻을 열만 당신은 필요합니다.PS:지 않았 테스 코드,그것은 당신에게 달려 있습니다.