FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Fecha/Hora de creacion
Posts: 257
Joined: Tue May 16, 2006 04:46 PM
Fecha/Hora de creacion
Posted: Sat Nov 22, 2008 07:08 PM

Hola Foro, con la funcion Directory() puedo extraer, entre otras cosas, la fecha y hora de un archivo o directorio, pero esos datos son los del ultimo cambio.

Alguien puede decirme como obtener la fecha y hora pero de creacion de un archivo o directorio?

Gracias

RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Fecha/Hora de creacion
Posted: Mon Nov 24, 2008 10:15 AM

cFile = 'c:\Plan001.xls' \ arquivo
cAtr = '' \ atributos
nSiz = 0 \ tamanho
dCreate = ctod('') \ data criação
nCreate = 0 \ hora criação em secs
dChange = ctod('') \ data ult.alteração
nChange = 0 \ hora ult.alteração em secs
FileStats(cFile,@cAtr,@nSiz,@dCreate,@nCreate,@dChange,@nChange)

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles“C
TDolphin
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Re: Fecha/Hora de creacion
Posted: Mon Nov 24, 2008 09:01 PM
RodolfoRBG wrote: Alguien puede decirme como obtener la fecha y hora pero de creacion de un archivo o directorio?
Hola Rodolfo:

Creo que pusiste tu pregunta en el foro equivocado pero prueba lo siguiente:

I'm afraid you posted your question in the wrong forum but try this:
#include "FiveWin.ch"

//------------------------------------------------------------------------------------------//

Function Main()

   Local aTime := FileTimes( "c:\fwh\samples\test.prg", 3 )

   ? Str( aTime[ 1 ], 4 ) + "/" + StrZero( aTime[ 2 ], 2 ) + "/" + ;
     StrZero( aTime[ 3 ], 2 ) + Space( 1 ) + ;
     StrZero( aTime[ 4 ], 2 ) + ":" + StrZero( aTime[ 5 ], 2 ) + ":" + ;
     StrZero( aTime[ 6 ], 2 )

Return nil

//------------------------------------------------------------------------------------------//

#pragma BEGINDUMP
#include <Windows.h>
#include <mapiwin.h>
#include <ClipApi.h>

HB_FUNC( FILETIMES ) // params cFileName, nTime --> { nYear, nMonth, nDay, nHour, nMin, nSec }
{
   LPSTR cFileName = _parc( 1 ) ;
   int nTime       = ( ISNUM( 2 ) ? _parni( 2 ) :  1 ) ; // defaults to 1

   FILETIME ftCreate, ftAccess, ftWrite ;
   SYSTEMTIME stTime ;
   BOOL bRet ;
   HANDLE hFile = CreateFile( cFileName, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ) ;

   if( ! hFile )
      return ;

   GetFileTime( (HANDLE) hFile, &ftCreate, &ftAccess, &ftWrite ) ;

   switch( nTime )
   {
      case 1 : // last update
         FileTimeToSystemTime( &ftWrite, &stTime ) ;
         break ;
      case 2 : // last access
         FileTimeToSystemTime( &ftAccess, &stTime ) ;
         break ;
      case 3 : // creation
         FileTimeToSystemTime( &ftCreate, &stTime ) ;
         break ;
      default : // last update
         FileTimeToSystemTime( &ftWrite, &stTime ) ;
         break ;
   }

   SystemTimeToTzSpecificLocalTime( NULL, &stTime, &stTime ) ;
   CloseHandle( hFile ) ;
   _reta( 6 ) ;
   _storni( stTime.wYear,   -1, 1 ) ;
   _storni( stTime.wMonth,  -1, 2 ) ;
   _storni( stTime.wDay,    -1, 3 ) ;
   _storni( stTime.wHour,   -1, 4 ) ;
   _storni( stTime.wMinute, -1, 5 ) ;
   _storni( stTime.wSecond, -1, 6 ) ;
}
#pragma ENDDUMP

La función FileTimes te revuelve un array con año, mes, dia, hora, minuto y segundo de la opción requerida.

The function FileTimes teturns an array containing year, month, day, hour, minute and second for the required option.

Saludos.
Regards.

Manuel Mercado
manuelmercado at prodigy dot net dot mx

Continue the discussion