Página 1 de 2

TimeZone

Enviado: 01 Set 2017 19:47
por Alexandre Silva
Pessoal
Alguma funcao que retorne a timezone no harbour ?

Quando chega horario de verao, pessoal que usa NFe Cte tem que indicar a time zone em varios lugares

<dhEvento>2016-10-31T09:44:20-02:00</dhEvento>

Obrigado

TimeZone

Enviado: 02 Set 2017 00:25
por Jairo Maia
Olá Alexandre,

Que estranho... Isso não é só no horário de verão e não tem nada a ver com Time Zone... Tem que informar sempre.

Código: Selecionar todos

cDateTime := TtoC( DateTime() )
cDateTime := Left( cDateTime, RAt(  ".", cDateTime ) -1 )

TimeZone

Enviado: 02 Set 2017 11:27
por Alexandre Silva
Opa
Acho que me expressei mal
Nos casos que temos que colocar a timezone, que na maior parte do Brasil se coloca é -03:00
mas quando entramos no horario de verao preciso indicar -02:00

Ocorre que esse periodo varia todo ano de outubro a fevereiro, nao quero ficar digitando esse periodo ou pedir para que seja indicado pelo usuario se esta no horario de verao..

Pensei que o Harbour, teria uma funcao que pega do sistema operacional se está ou nao em horario de verao ou se tem como pegar a timezone direto
-02:00 -03:00 -04:-00

TimeZone

Enviado: 02 Set 2017 11:46
por Itamar M. Lins Jr.
Ola!
pessoal que usa NFe Cte tem que indicar a time zone em varios lugares
Não entendi direito, mas aqui na Bahia é só desligar o horário de verão no windows mesmo.
A hora fica sempre correta, basta informar o local correto, mas isso é no OS não no aplicativo, porque o aplicativo não tem GPS "AINDA" rsrsrs.

Saudações,
Itamar M. Lins Jr.

TimeZone

Enviado: 02 Set 2017 13:25
por Alexandre Silva
No Nordeste nao entra em horario de verao

e sim.. o Windows(sistema operacional) tem controle do horario
pensei que o harbour tivesse como pegar..

TimeZone

Enviado: 02 Set 2017 14:44
por Itamar M. Lins Jr.
Pois é, só com GPS. Nem OS sabe.

Saudações,
Itamar M. Lins Jr.

TimeZone

Enviado: 02 Set 2017 15:24
por asimoes
Tem essa opção, já tentou?

http://ntp.br/guia-win-comum.php

TimeZone

Enviado: 03 Set 2017 14:48
por JoséQuintas
Veja se é isso que quer.
Procure por DateTimeXml()

https://github.com/JoseQuintas/sefazcla ... mlfunc.prg

Código: Selecionar todos

PROCEDURE Main
? DateTimeXml( Date(), Time(), "SP", .T. )
hbmk2 test sefazclass.hbc
d:\temp>test

2017-09-03T14:49:32-03:00

TimeZone

Enviado: 03 Set 2017 15:02
por JoséQuintas
Faltou mencionar: basta que o computador esteja com o horário correto.

Acaba uando as funções TercaDeCarnaval() e DomingoDePascoa(), HorarioDeVeraoInicio() e HorarioDeVeraoTermino(), mas todas estão no fonte.

TimeZone

Enviado: 03 Set 2017 16:50
por Alexandre Silva
Obrigado
Funcoes muito uteis.

TimeZone

Enviado: 04 Set 2017 09:51
por Jairo Maia
Olá Alexandre,
Alexandre Silva escreveu:se está ou nao em horario de verao ou se tem como pegar a timezone direto -02:00 -03:00 -04:-00
Ok. Acho que o único jeito é pela Consulta do Status Operacional. Veja um exemplo entre SP e AM. SP está com UTC 3 e AM UTC 4:
SP:
<retConsStatServ versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<tpAmb>2</tpAmb>
<verAplic>SP_NFE_PL_008i2</verAplic>
<cStat>107</cStat>
<xMotivo>Serviço em Operação</xMotivo>
<cUF>35</cUF>
<dhRecbto>2017-09-04T09:30:52-03:00</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>
AM:
<retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10">
<tpAmb>2</tpAmb>
<verAplic>AM3.10-4.00</verAplic>
<cStat>107</cStat>
<xMotivo>Servico em Operacao</xMotivo>
<cUF>13</cUF>
<dhRecbto>2017-09-04T08:36:22-04:00</dhRecbto>
<tMed>1</tMed>
</retConsStatServ>

TimeZone

Enviado: 04 Set 2017 10:27
por Kapiaba

Código: Selecionar todos

Function TimeZone(dData)

   Local cDateTimeZone,aTimeStamp,cTzd

   Default dData:=Date()

   aTimeStamp:=hb_atokens(tip_timestamp(dData)," ")

   cTzd:=aTail(aTimeStamp)

   cTzd:=Left(cTzd,Len(cTzd)-2)+":"+Right(cTzd,2)

   cDateTimeZone:=StrZero(Year(dData),4)+"-"+StrZero(Month(dData),2)+"-"+StrZero(Day(dData),2)+"T"+Time()+cTzd

Return(cDateTimeZone)
abs.

TimeZone

Enviado: 04 Set 2017 10:47
por JoséQuintas
Dei uma mexida nessa rotina.
Resta saber se em horário de verão vai estar ok.

Código: Selecionar todos

PROCEDURE Main

   ? DateTimeXml( Date(), Time(), "SP", .T. )
   ? TimeZone( Date() )

   RETURN

FUNCTION TimeZone( dData )

   RETURN Transform( Dtos( dData ), "@R 9999-99-99" ) + ;
          "T" + Time() + ;
          Transform( Right( Tip_TimeStamp(), 5 ), "@R X99:99" )
d:\temp>test

2017-09-04T10:46:22-03:00
2017-09-04T10:46:22-03:00

TimeZone

Enviado: 04 Set 2017 11:03
por JoséQuintas
Precisou atualização, passar a data em Tip_TimeStamp():

Código: Selecionar todos

PROCEDURE Main

? DateTimeXml( Stod( "20170101" ), Time(), "SP", .T. )
? TimeZone( Stod( "20170101" ) )


FUNCTION TimeZone( dData )

   RETURN Transform( Dtos( dData ), "@R 9999-99-99" ) + ;
          "T" + Time() + ;
          Transform( Right( Tip_TimeStamp( dData ), 5 ), "@R X99:99" )
2017-01-01T11:01:47-02:00
2017-01-01T11:01:47-02:00
Nota: não sei dizer se o Harbour 3.2 tem hb_TipTimeStamp()

TimeZone

Enviado: 05 Set 2017 19:54
por Itamar M. Lins Jr.
Ola!

Código: Selecionar todos

2017-09-05 10:29 UTC Viktor Szakats (vszakats users.noreply.github.com)
...
 * contrib/hbtip/misc.c
    ! TIP_TIMESTAMP(): fix to pad the day and year with zero
      Ref: https://tools.ietf.org/html/rfc2822#section-3.3
      Ref: https://developer.mozilla.org/docs/Web/HTTP/Headers/Date
    ! TIP_TIMESTAMP(): fix out-of-bounds array access when an empty
      date was passed
    % halve on-stack string buffer size
    * comment cleanups

  * contrib/hbtip/sessid.prg
    ! tip_DateToGMT(): fix to convert date to GMT (UTC)
...
Teve mais ajustes em outras áreas.

Saudações,
Itamar M. Lins Jr.