File "FileDate.inc"

Path: /linkedit/FileDate.inc
File size: 2.65 KB
MIME-type:
Charset: utf-8

'------------------------------------------------------------------------------
' This is FileDate.inc to be used in PowerBasic 9.0
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
#INCLUDE ONCE "win32api.inc"
'------------------------------------------------------------------------------
UNION QDFTUnion
  mQD AS QUAD
  mFT AS FILETIME
END UNION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION CreatedDate(BYVAL file AS STRING) AS STRING
  LOCAL sFilename    AS STRING
  LOCAL udtDirData   AS DIRDATA
  sFilename = DIR$(file TO udtDirData) : DIR$ CLOSE
  FUNCTION = DateString(udtDirData.CreationTime)
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION ModifiedDate(BYVAL file AS STRING) AS STRING
  LOCAL sFilename    AS STRING
  LOCAL udtDirData   AS DIRDATA
  sFilename = DIR$(file TO udtDirData) : DIR$ CLOSE
  FUNCTION = DateString(udtDirData.LastWriteTime)
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION AccessedDate(BYVAL file AS STRING) AS STRING
  LOCAL sFilename    AS STRING
  LOCAL udtDirData   AS DIRDATA
  sFilename = DIR$(file TO udtDirData) : DIR$ CLOSE
  FUNCTION = DateString(udtDirData.LastAccessTime)
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION DateString(BYVAL v_ddt AS QUAD) AS STRING
  LOCAL v_udtTemp        AS QDFTUnion
  LOCAL v_udtSystemTime  AS SYSTEMTIME

  ' Convert to local time
  ' FYI: WinOS stores timestamps in UTC time
  v_udtTemp.mQD = v_ddt
  ' Convert from UTC Tz (WinOS default) to local Tz
  FileTimeToLocalFileTime v_udtTemp.mFT, v_udtTemp.mFT
  ' Convert to ST structure
  FileTimeToSystemTime    v_udtTemp.mFT, v_udtSystemTime

  ' Return formatted string
  FUNCTION = FORMAT$(v_udtSystemTime.wYear,   "0000") + "-" + _
             FORMAT$(v_udtSystemTime.wMonth,  "00"  ) + "-" + _
             FORMAT$(v_udtSystemTime.wDay,    "00"  ) + ", " + _
             FORMAT$(v_udtSystemTime.wHour,   "00"  ) + ":" + _
             FORMAT$(v_udtSystemTime.wMinute, "00"  ) + ":" + _
             FORMAT$(v_udtSystemTime.wSecond, "00"  )

END FUNCTION
'------------------------------------------------------------------------------