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時間って事はロンドン-東京間の時差ですかね?システム時間に関することはあまり詳しくないのでよくわかりませんが。
-
卓漏
- 記事: 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
・・・・問題が解消しました。ありがとうございました。