2013-08-20 4 views
-1

C++에서 한 형식의 다른 형식으로 날짜를 변환하는 방법. 예 : - 01-DEC-12 형식의 날짜가 있습니다. 12012012 (mmddyyyy) 참고 모든 날짜 형식에 문자열을 사용하고 있습니다.한 형식에서 다른 형식으로 날짜 변환

+0

그래서 format1 문자열이 있습니다 ("01-DEC-2012"); 문자열 format2 == "12012012"을 원하십니까? 지금까지 뭐 해봤 어? – doctorlove

+1

이것은 지정된 사양에 대한 구현을 얻는 포럼이 아닙니다. 당신은 이미 시도한 것을 우리에게 보여줘야한다. – codeling

+0

나는 그가 펄을 시도했다고 생각한다. – x29a

답변

1

좀 영리한 코드가 확신 해요,하지만 난 단순히 이런 테이블을했을 :

struct MonthNameToNumber 
{ 
    string name; 
    string number; 
}; 

MonthNameToNumber mtable = { { "JAN", "01"}, { "FEB", "02" }, ... { "DEC", "12" } }; 

나머지 부분에 문자열을 분할과 함께 다시 붙여 넣기 단지 경우입니다 다른 형식.

0

타사 라이브러리를 사용하는 것이 좋습니다. 독자적으로 다른 날짜 형식을 구문 분석하려고합니다. 그렇게하고 싶다면 모든 날짜 형식 문자열 중 허용되는 일종의 허용 목록을 정의하는 것이 좋습니다.

01-DEC-12 
12.01.2012 
2012-01-12 

번째 단계는 내부 용 일반적인 일 포맷을 정의하는 것 (예를 들어, UNIX-소인 써서 time_t 구조체, ...).

세 번째 단계는 각 날짜 형식 문자열에 대한 파서를 제공하는 것입니다.이 부분은 사용자가 직접 파서를 작성해야하는 부분입니다 (예 : C/C++ 및/또는 stringstreams의 기본 문자열 기능 사용).).

허용 된 형식 문자열의 허용 목록을 신중히 정의하십시오. "yyyy-mm-dd"및 "yyyy-dd-mm"과 같은 것을 정의하는 것은 좋은 생각이 아닙니다. 2013-12-01 -> 2013 년 1 월 12 일 또는 2013 년 12 월 12 일을 상상해보십시오.

필자는 제 3 자 라이브러리를 선호합니다. boost date time. 더욱이 당신이 내부적 인 용도로만 이것을 필요로한다면, 당신은 분명히 문자열을 사용하는 것이 아니라 다른 종류의 표현 (다시 말해 UNIX-Timestamp 또는 time_t struct와 같은 것)을 사용해야합니다.

관련 문제