2012-07-18 3 views
0

날짜가 들어있는 입력 .txt 파일이 있습니다. 날짜는 08JUN98 또는 16NOV05와 같이 DDMONYY 형식입니다. 이 날짜를 파일의 생성 날짜와 비교하여 어느 날짜가 더 빠르는지 확인해야합니다.문자열의 날짜를 FILETIME으로 변환합니다.

FILETIME은 특히 CompareFileTime 함수가 있기 때문에 적절한 형식으로 보입니다. 그러나 날짜를 파일 시간으로 변환하는 데 문제가 있습니다.

파일에서 날짜를 추출하여 숫자 (일 1-31 일, 일 1-12, 년 1900-20)로 변환 할 수 있으므로 도움이 필요하지 않지만 자유롭게 의견을 말하십시오. 어쨌든.

실제 문제는 이러한 값을 FILETIME 형식으로 가져 오는 방법을 알 수 없다는 것입니다. 지금 당장 나는 3 개의 다른 문자열 (또는 int가 더 도움이된다면)을 하루, 한달 그리고 한 해 동안 하나씩 가지고 있습니다. 당신이 문자열에서 FILETIME으로 뛰어 내리는 것을 도울 수 있다면 그것은 좋을 것입니다.

또는 연구 중에 놓친 완전히 다른 방법이 있다면 언제든지 제안하십시오.

원하는 경우 내가 가지고있는 글을 게시 할 수는 있지만 문자열/int에 도달하기 때문에 도움이 될 것이라고 생각하지 않습니다.


그것이 어떤 명확하게하는 경우, 5 월 3 일, 2002 년에 나는이 시점에서 내 변수에있는 값은

string day = "03"; 
string month ="5"; 
string year = "2002; 
int dayint = 3; 
int monthint = 5; 
int yearint = 2002; 

의 라인을 따라 뭔가 것 그리고 방법이 필요합니다 이것을 FILETIME으로 변환 하시려면

감사합니다.


편집 :

나는 내가 SYSTEMTIME 구조, 또는 어떻게 다른 시간 시스템을 수행하는 방법을 채우기 얼마나 확실하지 않다. 그래서 나는 그것이 내 질문이라고 생각한다.

필자도 정확도가 필요한 것으로 언급해야합니다. 시간과 그보다 더 작은 것이 내게 정말로 관심사가 아닙니다.


EDIT2 : 그 작동하는 것 같다 때문에

내가의 SYSTEMTIME INT 값을주고 시도하지 않아야합니다. 그러나, 나는 그 systemtime을 filetime으로 변환하려고 할 때 문제에 직면 해있다. "오류 :"SYSTEMTIME "에서"const SYSTEMTIME * "까지 적절한 변환이 없습니다"라고 나와 있습니다. 이 문제를 해결하는 방법을 모르겠다. 왜냐하면 systime 변수를 const SYSTEMTIME으로 정의하면 값을 할당 할 수 없기 때문이다. 그것은 물론

SYSTEMTIME systime; 
LPFILETIME ftime1; 
LPFILETIME ftime2; 
int dayint=6; 
int monthint=12; 
int yearint=1989; 

systime.wDay = dayint; 
systime.wMonth = monthint; 
//and so on for year, hour, etc. 
SystemTimeToFileTime(systime,ftime1);  //This is where the aforementioned error occurs 
GetFileTime(filename, NULL, NULL, ftime2); //I'm also not sure about this line... feel free to critique it. I'm only interested in the last written time so I put NULL for the other times... When I check the values for this (in SYSTEMTIME) it only returns 52428, so I don't think this line is working correctly... 
CompareFileTime(ftime1,ftime2); 

을 도움이된다면

여기, 관련 코드입니다, 일, 월, 년에 대한 값은 실제 코드에 하드 코딩되어 있지 않습니다.


EDIT3 :

는 내가 그 문제를 해결하려고하는거야 나쁜 핸들 ....

있습니다 ....나는 그것을 얻을 수없는 경우 당신의 도움이 벤 보이트 에 대한 덕분에, 내가 다시

+0

구조체에서 변수를 할당하는 방법을 모른다면 좋은 C++ 책을 얻으십시오 : http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list –

+0

거의 다 왔지만,이 함수들은'SYSTEMTIME' 또는'FILETIME' 구조체의 주소를 원합니다. 그래서'SystemTimeToFileTime (& systime, & ftime1)'등을 말하십시오 ('&'연산자는 변수의 주소를 얻습니다.) 주소를 포인터라고합니다.) 또한, 'SYSTEMTIME'의 다른 필드 (예 :시, 분, 초)를 설정해야합니다. 걱정하지 않으면 자정을 사용할 수 있습니다. 그리고 함수가 성공했는지 확인하기 위해 함수의 반환 값을 확인해야합니다. –

+0

고마워, 그게 내가 필요한거야. 나는 시대의 정점을 놓치고 있었다. 그래서 올바르게 이해한다면,'SystemTimeToFileTime' 함수는 실제 변수가 아닌 변수의 주소를 필요로합니까? 또한, 이제는'GetFileTime'을 사용하는 데 문제가 있습니다. 실제로'FILETIME'을 리턴하지는 않을 것이고, 각 필드에 52428의 값을 줄 것입니다. 다음 GetFileTime (filename, NULL, NULL, & ftime2);이 (가) 사용 중입니까? 문제가 있습니까? – user1533323

답변

4

당신은 SystemTimeToFileTime

당신은 나중에 LocalFileTimeToFileTime을 사용할 수 있습니다 전화 후 SYSTEMTIME 구조를 입력 할 수있을 것 같아요 UTC 또는 현지 시간으로 시간을 지정할지 여부에 따라 다릅니다.

+0

어떻게'SYSTEMTIME' 구조체를 채울 수 있습니까? 나도 그 일을하는 방법을 알아낼 수 없다. 나는 그것을 분명히해야한다고 생각합니다. 나는 게시물을 편집 했으므로 희망적으로 명확해질 것이다. 도움을 주셔서 감사합니다, 나는 당신이 맞다고 생각합니다. – user1533323

+2

SYSTEMTIME의 필드는 자체적으로 설명해야하지만 MSDN 설명서는 경우에 따라 철자를 바꿉니다. 문제를 해결하는 데 어려움이있는 경우 문제가있는 부분을 더 자세히 설명해야합니다. –

+0

원래 게시물을 편집하고 더 많은 정보를 추가 했으므로 찾고 있던 모든 것입니다. – user1533323

관련 문제