>

다음 데이터 형식의 CSV 파일을 읽고 있습니다

14-Sep-12   ALUMINI 31-Dec-12   117.65  119.25  117.65  118.9   116.75  36
14-Sep-12   ALUMINI 30-Nov-12   116.95  118.65  116.8   118.4   116.5   252
14-Sep-12   ALUMINI 31-Oct-12   116.45  118.15  116.05  117.85  116.05  2802

다음 코드로이 데이터를 읽고 있습니다

List<string> sc = new List<string>();
filepath = "abc.csv" ;
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite);
StreamReader sr = new StreamReader(fs);
if (fs != null)
{
  while ((oneLine = sr.ReadLine()) != null)
  {
     sc.Add(oneLine);
  }
  sr.Close();
  // Now writing above data in  some file , fo and fout are already declared 
  fo = new FileStream("tempd.txt", FileMode.Append, FileAccess.Write);
  fout = new StreamWriter(fo);
  foreach (string str in sc)
  {
    // i am using ' ' as one of my splitter character
    char[] splitter = { ' ', ',', '\t' };
    string[] sa1 = str.Split(splitter);
    string wline = sa1[0] + "," + sa1[1] + "," + sa1[5] + "," + sa1[6] + "," + sa1[7] ;
    fout.WriteLine(wline);
  }
  fout.Close();
}

내 가장 큰 문제는 데이터의 첫 번째 열이 2012 년 9 월 14 일이며 2012 년 9 월 14 일로 변경되었다는 것입니다. 나머지 응용 프로그램에서 문제가 발생합니다.

파일을 읽고 쓰는 동안 날짜 형식을 변환 할 수있는 방법이 있습니까? 2012 년 9 월 14 일을 2012-9-14로 저장하고 싶습니다.

  • 답변 # 1

    이것이 당신이 찾고있는 답이라고 생각합니다.

    DateTime d = Convert.ToDateTime(sa1[0]);
    string wline = d.ToString("yyyy-MM-dd") + "," + sa1[1] + "," + sa1[5] + "," + sa1[6] + "," + sa1[7];
    
    

  • 답변 # 2

    질문은 이해가되지 않으므로 여기서 몇 가지 가정을하겠습니다. 먼저 CSV 파일이라고합니다. CSV는 쉼표로 구분 된 값을 나타내지 만 예제를 표시하면 쉼표가 전혀 표시되지 않습니다. Microsoft Excel에서 CSV를 열어서 게시물로 복사했다고 생각하십니까?

    그렇다면 원본 CSV 파일을 메모장 (또는 다른 텍스트 편집기)에서 열도록 요청합니다. 그러면 원래 데이터에 실제로 대시가없는 것을 볼 수 있습니다.

    기본적으로 CSV 파일에 날짜를 9 월 14 일 14 일로 입력하면 Excel은 날짜임을 인식하지만 자체 기본 날짜 형식으로 형식을 지정하므로 14-Sep-12처럼 보입니다. Excel에서.

    또 다른 것은 전체 파일을 문자열 목록으로 읽은 다음 전체 목록을 다시 포맷 된 새 파일로 출력하는 것입니다. 이 모든 것을 메모리에로드하는 대신 한 번에 한 줄 씩만 조작하면 어떨까요? 입력 및 출력 파일을 모두 열고 입력에서 한 줄을 읽고 조작 한 후 출력에 씁니다. 그런 다음 다음 줄로 넘어 가서 두 파일을 모두 닫습니다. 메모리 사용량이 훨씬 적고 일반적으로 더 빨리 실행됩니다.

    날짜를 다시 포맷하려면 간단합니다. 문자열을 날짜로 구문 분석하십시오. 그런 다음 .ToString ()의 문자열 포맷터로 날짜 출력을 제어하십시오. Geethanga의 대답이 이것을 잘 보여 주지만 Date.Parse ()는 일반적으로 Convert.ToDateTime ()보다 선호됩니다.

  • 이전 performance - 변수를 선언하는 자바 스크립트 - 모범 사례
  • 다음 python - 사전에서 가져온 입력을 어떻게 계산합니까?