0

日付を含む入力.txtファイルがあります。日付は、08JUN98または16NOV05のように、DDMONYYの形式です。この日付をファイルの作成日と比較して、どちらが早いかを確認する必要があります。

特にCompareFileTime関数があるため、FILETIMEは適切な形式のようです。ただし、日付をファイル時間に変換する際に問題が発生します。

ファイルから日付を抽出して数値に変換できるので(1〜31日、1〜12か月、1900〜20年)、サポートは必要ありませんが、とにかくコメントしてください。

本当の問題は、これらの値をFILETIME形式に変換する方法がわからないことです。現在、私はそれらを3つの異なる文字列(またはそれがさらに役立つ場合はint)として、日、月、年に1つずつ持っています。文字列からFILETIMEにジャンプするのを手伝っていただければ、それは素晴らしいことです。

または、調査中に見逃した完全に良い方法がある場合は、遠慮なく提案してください。

必要に応じて、私が持っているものを投稿することはできますが、文字列/整数にしか到達しないため、役に立たないと思います。


それがより明確になるとすれば、2002年5月3日のこの時点で変数にある値は、次のようなものになります。

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

そして、これをFILETIMEに変換する方法が必要です

本当にありがとう。


編集:

SYSTEMTIME構造をどのように埋めるのか、あるいは別の時間システムでどのように埋めるのかさえわかりません。だから私はそれが私の質問だと思います。

また、必要なのは日の精度だけだということも述べておかなければなりません。時間やそれより短い時間は、私にはあまり関係ありません。


EDIT2:

SYSTEMTIMEそれがうまくいくように見えるので、私はint値を与えようとしなかったに違いありません。ただし、そのシステム時間をファイル時間に変換しようとすると、問題が発生します。「エラー:「SYSTEMTIME」から「constSYSTEMTIME*」への適切な会話が存在しません」と表示されます。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:

ハンドルが悪い…。

私はそれを修正しようとしています....あなたの助けに感謝しますBenVoigt私がそれを得ることができないならば、私は戻ってくると思います

4

1 に答える 1

4

SYSTEMTIME構造を入力してから呼び出すことができますSystemTimeToFileTime

LocalFileTimeToFileTimeUTCで時間を指定するか現地時間で指定するかによっては、後で使用することもできます。

于 2012-07-18T01:25:36.100 に答える