[リストへもどる]
一括表示

投稿時間:2002/11/28(Thu) 09:01
投稿者名:のぶ
Eメール:
URL :
タイトル:
ファイルのタイムスタンプについて
VBです初心者
ファイルのプロパティに更新,作成の 日付/時刻がありますが、
その日付/時刻を取得したくて、本をみてタイムスタンプというのが
ありやってみたところ、どうやらグリニッジ標準時になっている
みたいなんですが、東京標準時を取得したいのですが、皆さんは
取得時刻+8時間という風にしているのですか?日付をまたぐ時
面倒なのであれば教えて下さい。
宣言で以下のような風になってました。

Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type
Private Type WIN32_FILE_ATTRIBUTE_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
End Type
Private Declare Function GetFileAttributesEx Lib "kernel32" Alias "GetFileAttributesExA" (ByVal lpFileName As String, ByVal fInfoLevelId As Long, lpFileInformation As WIN32_FILE_ATTRIBUTE_DATA) As Long


Private Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long

投稿時間:2002/11/28(Thu) 09:53
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re: ファイルのタイムスタンプについて
> VBです初心者
> ファイルのプロパティに更新,作成の 日付/時刻がありますが、
> その日付/時刻を取得したくて、本をみてタイムスタンプというのが
> ありやってみたところ、どうやらグリニッジ標準時になっている

試してませんが、FileTimeToSystemTimeでなくFileTimeToLocalFileTimeを
使えば地域の時間で取得できるのではないでしょうか?

> みたいなんですが、東京標準時を取得したいのですが、皆さんは
> 取得時刻+8時間という風にしているのですか?日付をまたぐ時

+ 8時間じゃなく+9時間では?
#書き間違いか、勘違いかだと思いますけど

投稿時間:2002/11/28(Thu) 10:10
投稿者名:takk
Eメール:takk_neo@hotmail.com
URL :
タイトル:
Re: ファイルのタイムスタンプについて
FileSystemObjectを使えば簡単に取得できますよ。


'プロジェクトの参照設定でMicrosoft Scripting Runtimeをチェックしてください。
'もしくはCreateObjectで作成。
Private Sub Command1_Click()
    Dim fSO As FileSystemObject
    Dim fFile As File
    
    Set fSO = New FileSystemObject
    Set fFile = fSO.GetFile(ファイルのパス)
    
    Debug.Print "作成日時:" & fFile.DateCreated
    Debug.Print "更新日時:" & fFile.DateLastModified
    
    Set fFile = Nothing
    Set fSO = Nothing
End Sub

投稿時間:2002/12/06(Fri) 08:23
投稿者名:のぶ
Eメール:
URL :
タイトル:
Re: ファイルのタイムスタンプについて
すみません 確認が遅れてしまいました。
よねKENさん TAKKさん ありがとうございました
早速試してみます。

投稿時間:2002/12/06(Fri) 10:02
投稿者名:のぶ
Eメール:
URL :
タイトル:
Re: ファイルのタイムスタンプについて
試したところ よねKENさんの方法では
訳のわからない数値が返ってきました。
ファイルのプロパティ表示は
更新日時 2002/12/06 8:53
作成日時  2002/12/06 8:52

FileTimeToSystemTime を使ったとき 
グリニッジ標準時になってました。
更新日時:2002/12/5 23:53:37
作成日時:2002/12/5 23:52:49

FileTimeToLocalFileTime を使ったとき 
下のような値になってました。
更新日時:-18668/-2263/450 0:0:0
作成日時:-15958/-9550/450 0:0:0

ただ単純に FileTimeToSystemTime
をFileTimeToLocalFileTimeという風に
書き換えただけなのですが・・・
APIの関数構造を全く理解出来てないので
すみません

TAKKさんの参照設定のMicrosoft Scripting Runtime 
を使用してでの取得はうまくできました。
参照設定を使わずCreateObjectを使っての方法を
してみたいと思い試みたのですがさっぱりわからず
断念しました(汗) 
ありがとうございました。

投稿時間:2002/12/06(Fri) 10:12
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re^2: ファイルのタイムスタンプについて
Googleで検索したら以下のサンプルがありました。
http://plaza.harmonix.ne.jp/~ahoshino/VB/FileTimeSoft.htm

これによればFileTimeToSystemTimeも使うようですね。
いい加減なことを書いてすいませんでした(汗

投稿時間:2002/12/06(Fri) 10:51
投稿者名:takk
Eメール:takk_neo@hotmail.com
URL :
タイトル:
Re^2: ファイルのタイムスタンプについて
> 参照設定を使わずCreateObjectを使っての方法を
> してみたいと思い試みたのですがさっぱりわからず
> 断念しました(汗) 

    Dim fSO As FileSystemObject
    Dim fFile As File
    
    Set fSO = New FileSystemObject
    Set fFile = fSO.GetFile(ファイルのパス)

の部分を

    Dim fSO As Object
    Dim fFile As Object
    
    Set fSO = CreateObject("Scripting.FileSystemObject")
    Set fFile = fSO.GetFile(ファイルのパス)

にして下さい。

投稿時間:2002/12/06(Fri) 11:33
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: ファイルのタイムスタンプについて
簡単に取得したいならこれでも取得できます。

Private Sub Command1_Click()
    With CreateObject("Scripting.FileSystemObject").GetFile("c:\temp.xls")
        Debug.Print "更 新 日 時 :" & .DateLastModified
        Debug.Print "作 成 日 時  :" & .DateCreated
        Debug.Print "アクセス日時 :" & .DatelastAccessed
    End With
End Sub

投稿時間:2002/12/09(Mon) 12:14
投稿者名:のぶ
Eメール:
URL :
タイトル:
Re^2: ファイルのタイムスタンプについて
よねKENさん、TAKKさん再びありがとうございます。
そして花ちゃんさんもありがとうございます。
早速チャレンジしてみます。