문제

내가 노력으로 모든 변환 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:지 않았 테스 코드,그것은 당신에게 달려 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top