ファイルの作成日時を取得

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
卓漏
記事: 32
登録日時: 2005年11月30日(水) 06:38
お住まい: 静岡県の田舎町

ファイルの作成日時を取得

#1 投稿記事 by 卓漏 »

下のような、プログラムを作って、エラーもなく動作するのですが、
なぜか、作成日時の時間の部分が、実際とずれてしまっています。
どこか、間違っている部分とかあるでしょうか?

コード: 全て選択


Function GetFileCreationTime(fileNumber As Integer) As String
	'+ ファイルの作成日時を取得します +
	Dim Str As String
	Dim fileFDT As FILETIME
	Dim fileSDT As SYSTEMTIME

	GetFileTime(fileData(fileNumber).hFile, fileFDT, ByVal NULL, ByVal NULL)

	FileTimeToSystemTime(fileFDT, fileSDT)

	Str = Str$(fileSDT.wYear) & "/" & Str$(fileSDT.wMonth) & "/" & Str$(fileSDT.wDay)
	Str = Str & " " & Str$(fileSDT.wHour) & ":" & Str$(fileSDT.wMinute) & ":" & Str$(fileSDT.wSecond)

	GetFileCreationTime = Str

End Function
ちなみに、「fileData(fileNumber).hFile」は、

コード: 全て選択


fileData(fileNumber).hFile = CreateFile(pFilePath, GENERIC_READ + GENERIC_WRITE, 0, ByVal NULL, OPEN_ALWAYS, FILE_FLAG_RANDOM_ACCESS, NULL)
となっています。
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

#2 投稿記事 by Tomorrow »

過去ログ"BackSearchAB"をお持ちならキーワードに"FILETIME"と入れて検索してみてください。
9時間ほどズレが生じると報告されているトピックが見つかります。

FileTimeToLocalFileTime関数を使うと解消するみたいです。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#3 投稿記事 by konisi »

9時間って事はロンドン-東京間の時差ですかね?システム時間に関することはあまり詳しくないのでよくわかりませんが。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
卓漏
記事: 32
登録日時: 2005年11月30日(水) 06:38
お住まい: 静岡県の田舎町

解決しました。

#4 投稿記事 by 卓漏 »

「Tomorrow」さんに言われたとおり、「FileTimeToLocalFileTime」を使ってみたら・・・・

コード: 全て選択


Function Export GetFileCreationTime(fileNumber As Integer) As String
	'+ ファイルの作成日時を取得します +
	Dim Str As String
	Dim fileUTC_FDT As FILETIME
	Dim fileLocal_FDT As FILETIME
	Dim fileSDT As SYSTEMTIME

	GetFileTime(fileData(fileNumber).hFile, fileUTC_FDT, ByVal NULL, ByVal NULL)

	FileTimeToLocalFileTime(fileUTC_FDT, fileLocal_FDT)

	FileTimeToSystemTime(fileLocal_FDT , fileSDT)

	Str = Str$(fileSDT.wYear) & "/" & Str$(fileSDT.wMonth) & "/" & Str$(fileSDT.wDay)
	Str = Str & " " & Str$(fileSDT.wHour) & ":" & Str$(fileSDT.wMinute) & ":" & Str$(fileSDT.wSecond)

	GetFileCreationTime = Str

End Function
・・・・問題が解消しました。ありがとうございました。
返信する