In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Time Zone em Xailer

Foro de Xailer profesional en español
User avatar
Marcelo Coelho Silva
Posts: 267
Joined: Sat May 31, 2008 4:49 pm

Time Zone em Xailer

Postby Marcelo Coelho Silva » Wed Oct 21, 2015 3:32 am

Prezados Senhores,

Como posso ler o Time Zone (fuso horário) do Windows (exemplo: (UTC-03:00) Brasília) ?

Exemplo:
? Time() // 18:30:10
? função Time zone // (18:30:10) UTC -03:00 - Qual a função para se ler o Time Zone ?

A quem puder me ajudar,

Desde já agradeço,
Att.

Marcelo Coelho Silva
Brasil.
User avatar
ignacio
Site Admin
Posts: 8562
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Time Zone em Xailer

Postby ignacio » Wed Oct 21, 2015 11:39 am

Buenos días,

Existe una función del API de Windows de nombre GetTimeZoneInformation que espero le valga. Toda la información de la función la puede encontrar en este enlace:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724421%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

Y para su uso desde Xailer le adjunto una función que devuelve toda la información en un hash que supongo no tendrá ningún problema en saber como funcionan los hash de Harbour.

Saludos

Code: Select all

#pragma BEGINDUMP

#include <windows.h>
#include <xailer.h>

XA_FUNC( GETTIMEZONEINFORMATION )
{
   TIME_ZONE_INFORMATION tz;
   if( GetTimeZoneInformation( &tz ) )
      {
      PHB_ITEM pItem, pKey, pValue;
      pItem = hb_hashNew( NULL );
      pKey = hb_itemNew( NULL );
      pValue = hb_itemNew( NULL );
     
      hb_itemPutC( pKey, "Bias" );
      hb_itemPutNL( pValue, tz.Bias );
      hb_hashAdd( pItem, pKey, pValue );

      hb_itemPutC( pKey, "StandardName" );
      hb_itemPutC( pValue, (char *) tz.StandardName );
      hb_hashAdd( pItem, pKey, pValue );

      hb_itemPutC( pKey, "StandardDate" );
      hb_itemPutD( pValue, tz.StandardDate.wYear, tz.StandardDate.wMonth, tz.StandardDate.wDay );
      hb_hashAdd( pItem, pKey, pValue );

      hb_itemPutC( pKey, "StandardBias" );
      hb_itemPutNL( pValue, tz.StandardBias );
      hb_hashAdd( pItem, pKey, pValue );

      hb_itemPutC( pKey, "DatlightName" );
      hb_itemPutC( pValue, (char *) tz.DaylightName );
      hb_hashAdd( pItem, pKey, pValue );

      hb_itemPutC( pKey, "DaylightDate" );
      hb_itemPutD( pValue, tz.DaylightDate.wYear, tz.DaylightDate.wMonth, tz.DaylightDate.wDay );
      hb_hashAdd( pItem, pKey, pValue );

      hb_itemPutC( pKey, "DaylightBias" );
      hb_itemPutNL( pValue, tz.DaylightBias );
      hb_hashAdd( pItem, pKey, pValue );

      hb_itemRelease( pKey );
      hb_itemRelease( pValue );
      hb_itemReturnRelease( pItem );
      }
   else
      hb_ret();
}

#PRAGMA ENDDUMP
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info

Return to “Spanish”