Api win32 para conocer la zona GTM en uso por Windows?

16/03/2012 - 13:23 por flyguille | Informe spam
Lo que dice el asunto, no solo necesito saber la fecha y hora, lo cual
es fácil, necesito saber en que zona horaria está configurado o en uso
actualmente por Windows, la razón, necesito ese dato para validar el
reloj RTC local vía remota.

Lo que necesitaría, es como obtener su valor, por ej, GTM -2, GTM +2,
etc... y no el nombre, el nombre de la zona horaria q figura en el
droplist eso no me interesa.

Preguntas similare

Leer las respuestas

#1 flyguille
16/03/2012 - 13:54 | Informe spam
On 16 mar, 09:23, flyguille wrote:
Lo que dice el asunto, no solo necesito saber la fecha y hora, lo cual
es fácil, necesito saber en que zona horaria está configurado o en uso
actualmente por Windows, la razón, necesito ese dato para validar el
reloj RTC local vía remota.

Lo que necesitaría, es como obtener su valor, por ej, GTM -2,  GTM +2,
etc... y no el nombre, el nombre de la zona horaria q figura en el
droplist eso no me interesa.



ya encontré que GetSystemTime puede ser útil, pero esa función
devuelve una estructura conocida como SYSTEMTIME, y yo lo necesito en
una variable "as Date" para que el software existente la pueda
procesar, álguien sabe como hacer la conversión?

yo ya pensé en algo manual como var = cdate("01:00:00") * wHour +
cdate("00:01:00") * wMinute, pero eso no funcionará, primero porque no
es algo rápido, segundo porque también necesito componer el valor
numérico de la fecha, que en el caso de una variable DATE, los enteros
son días, y sería un quilombo calcular años bisiestos, no bisiestos,
meses del año etc etc

seguro que windows tiene una función para hacer la conversión, pero no
la encuentro. ¿alguien me dá una mano?

sino, solo necesito saber lo que originalmente pregunté, cual es el
valor GTM configurado.
Respuesta Responder a este mensaje
#2 flyguille
16/03/2012 - 14:14 | Informe spam
On 16 mar, 09:54, flyguille wrote:
On 16 mar, 09:23, flyguille wrote:

> Lo que dice el asunto, no solo necesito saber la fecha y hora, lo cual
> es fácil, necesito saber en que zona horaria está configurado o en uso
> actualmente por Windows, la razón, necesito ese dato para validar el
> reloj RTC local vía remota.

> Lo que necesitaría, es como obtener su valor, por ej, GTM -2,  GTM +2,
> etc... y no el nombre, el nombre de la zona horaria q figura en el
> droplist eso no me interesa.

 ya encontré que GetSystemTime puede ser útil, pero esa función
devuelve una estructura conocida como SYSTEMTIME, y yo lo necesito en
una variable "as Date" para que el software existente la pueda
procesar, álguien sabe como hacer la conversión?

yo ya pensé en algo manual como var = cdate("01:00:00") * wHour +
cdate("00:01:00") * wMinute, pero eso no funcionará, primero porque no
es algo rápido, segundo porque también necesito componer el valor
numérico de la fecha, que en el caso de una variable DATE, los enteros
son días, y sería un quilombo calcular años bisiestos, no bisiestos,
meses del año etc etc

seguro que windows tiene una función para hacer la conversión, pero no
la encuentro. ¿alguien me dá una mano?

sino, solo necesito saber lo que originalmente pregunté, cual es el
valor GTM configurado.



ehmmmm, ya fue, ya lo tengo, la solución es:


Public Declare Sub GetSystemTime Lib "kernel32.dll" (LPSYSTEMTIME As
SYSTEMTIME)

Public 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

Public Declare Function SystemTimeToVariantTime Lib
"OleAut32.dll" (LPSYSTEMTIME As SYSTEMTIME, OutDate As Date) As
Integer


Private Sub Timer1_Timer()

Dim SysTime As SYSTEMTIME
Dim b As Date

GetSystemTime SysTime
If SystemTimeToVariantTime(SysTime, b) Then
Label1.Caption = Format$(b, "yyyy/mm/dd hh:mm:ss")
End If

End Sub
Respuesta Responder a este mensaje
#3 flyguille
16/03/2012 - 19:07 | Informe spam
On 16 mar, 10:14, flyguille wrote:
On 16 mar, 09:54, flyguille wrote:









> On 16 mar, 09:23, flyguille wrote:

> > Lo que dice el asunto, no solo necesito saber la fecha y hora, lo cual
> > es fácil, necesito saber en que zona horaria está configurado o en uso
> > actualmente por Windows, la razón, necesito ese dato para validar el
> > reloj RTC local vía remota.

> > Lo que necesitaría, es como obtener su valor, por ej, GTM -2,  GTM +2,
> > etc... y no el nombre, el nombre de la zona horaria q figura en el
> > droplist eso no me interesa.

>  ya encontré que GetSystemTime puede ser útil, pero esa función
> devuelve una estructura conocida como SYSTEMTIME, y yo lo necesito en
> una variable "as Date" para que el software existente la pueda
> procesar, álguien sabe como hacer la conversión?

> yo ya pensé en algo manual como var = cdate("01:00:00") * wHour +
> cdate("00:01:00") * wMinute, pero eso no funcionará, primero porque no
> es algo rápido, segundo porque también necesito componer el valor
> numérico de la fecha, que en el caso de una variable DATE, los enteros
> son días, y sería un quilombo calcular años bisiestos, no bisiestos,
> meses del año etc etc

> seguro que windows tiene una función para hacer la conversión, pero no
> la encuentro. ¿alguien me dá una mano?

> sino, solo necesito saber lo que originalmente pregunté, cual es el
> valor GTM configurado.

ehmmmm, ya fue, ya lo tengo, la solución es:

Public Declare Sub GetSystemTime Lib "kernel32.dll" (LPSYSTEMTIME As
SYSTEMTIME)

Public 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

Public Declare Function SystemTimeToVariantTime Lib
"OleAut32.dll" (LPSYSTEMTIME As SYSTEMTIME, OutDate As Date) As
Integer

Private Sub Timer1_Timer()

Dim SysTime As SYSTEMTIME
Dim b As Date

GetSystemTime SysTime
If SystemTimeToVariantTime(SysTime, b) Then
    Label1.Caption = Format$(b, "yyyy/mm/dd hh:mm:ss")
End If

End Sub








Esto es un problema, porque si valido solo el SystemTime (UTC), un
fraude puede ser, adelantan en 3 horas el reloj y atrazan en 3 horas
la zona horaria seleccionada, entonces el UTC termina siendo el mismo
y el servidor lo valida, y eso no dá.


Necesitaría si o si una forma de obtener el valor GTM configurado en
windows.
Respuesta Responder a este mensaje
#4 Leonardo Azpurua
17/03/2012 - 00:41 | Informe spam
"flyguille" escribió en el mensaje
news:
On 16 mar, 10:14, flyguille wrote:
On 16 mar, 09:54, flyguille wrote:









> On 16 mar, 09:23, flyguille wrote:

> > Lo que dice el asunto, no solo necesito saber la fecha y hora, lo cual
> > es fácil, necesito saber en que zona horaria está configurado o en uso
> > actualmente por Windows, la razón, necesito ese dato para validar el
> > reloj RTC local vía remota.

> > Lo que necesitaría, es como obtener su valor, por ej, GTM -2, GTM +2,
> > etc... y no el nombre, el nombre de la zona horaria q figura en el
> > droplist eso no me interesa.

> ya encontré que GetSystemTime puede ser útil, pero esa función
> devuelve una estructura conocida como SYSTEMTIME, y yo lo necesito en
> una variable "as Date" para que el software existente la pueda
> procesar, álguien sabe como hacer la conversión?

> yo ya pensé en algo manual como var = cdate("01:00:00") * wHour +
> cdate("00:01:00") * wMinute, pero eso no funcionará, primero porque no
> es algo rápido, segundo porque también necesito componer el valor
> numérico de la fecha, que en el caso de una variable DATE, los enteros
> son días, y sería un quilombo calcular años bisiestos, no bisiestos,
> meses del año etc etc

> seguro que windows tiene una función para hacer la conversión, pero no
> la encuentro. ¿alguien me dá una mano?

> sino, solo necesito saber lo que originalmente pregunté, cual es el
> valor GTM configurado.

ehmmmm, ya fue, ya lo tengo, la solución es:

Public Declare Sub GetSystemTime Lib "kernel32.dll" (LPSYSTEMTIME As
SYSTEMTIME)

Public 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

Public Declare Function SystemTimeToVariantTime Lib
"OleAut32.dll" (LPSYSTEMTIME As SYSTEMTIME, OutDate As Date) As
Integer

Private Sub Timer1_Timer()

Dim SysTime As SYSTEMTIME
Dim b As Date

GetSystemTime SysTime
If SystemTimeToVariantTime(SysTime, b) Then
Label1.Caption = Format$(b, "yyyy/mm/dd hh:mm:ss")
End If

End Sub








Esto es un problema, porque si valido solo el SystemTime (UTC), un
fraude puede ser, adelantan en 3 horas el reloj y atrazan en 3 horas
la zona horaria seleccionada, entonces el UTC termina siendo el mismo
y el servidor lo valida, y eso no dá.


Necesitaría si o si una forma de obtener el valor GTM configurado en
windows.


http://vbcity.com/forums/p/1970/10342.aspx

El atributo "Bias" de la estructura TIME_ZONE_INFORMATION contiene la
cantidad de minutos que hay que SUMAR a la hora actual para obtener la hora
GMT.

Para Caracas, que está en GMT -4:30, contiene 270. Para Kabul, en GMT +4:30,
contiene -270.

El ejemplo en vbcity funciona sin modificaciones.

Salud!
Respuesta Responder a este mensaje
#5 flyguille
17/03/2012 - 01:08 | Informe spam
On 16 mar, 20:41, "Leonardo Azpurua" wrote:
"flyguille" escribió en el mensajenews:
On 16 mar, 10:14, flyguille wrote:









> On 16 mar, 09:54, flyguille wrote:

> > On 16 mar, 09:23, flyguille wrote:

> > > Lo que dice el asunto, no solo necesito saber la fecha y hora, lo cual
> > > es fácil, necesito saber en que zona horaria está configurado o en uso
> > > actualmente por Windows, la razón, necesito ese dato para validar el
> > > reloj RTC local vía remota.

> > > Lo que necesitaría, es como obtener su valor, por ej, GTM -2, GTM +2,
> > > etc... y no el nombre, el nombre de la zona horaria q figura en el
> > > droplist eso no me interesa.

> > ya encontré que GetSystemTime puede ser útil, pero esa función
> > devuelve una estructura conocida como SYSTEMTIME, y yo lo necesito en
> > una variable "as Date" para que el software existente la pueda
> > procesar, álguien sabe como hacer la conversión?

> > yo ya pensé en algo manual como var = cdate("01:00:00") * wHour +
> > cdate("00:01:00") * wMinute, pero eso no funcionará, primero porque no
> > es algo rápido, segundo porque también necesito componer el valor
> > numérico de la fecha, que en el caso de una variable DATE, los enteros
> > son días, y sería un quilombo calcular años bisiestos, no bisiestos,
> > meses del año etc etc

> > seguro que windows tiene una función para hacer la conversión, pero no
> > la encuentro. ¿alguien me dá una mano?

> > sino, solo necesito saber lo que originalmente pregunté, cual es el
> > valor GTM configurado.

> ehmmmm, ya fue, ya lo tengo, la solución es:

> Public Declare Sub GetSystemTime Lib "kernel32.dll" (LPSYSTEMTIME As
> SYSTEMTIME)

> Public 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

> Public Declare Function SystemTimeToVariantTime Lib
> "OleAut32.dll" (LPSYSTEMTIME As SYSTEMTIME, OutDate As Date) As
> Integer

> Private Sub Timer1_Timer()

> Dim SysTime As SYSTEMTIME
> Dim b As Date

> GetSystemTime SysTime
> If SystemTimeToVariantTime(SysTime, b) Then
> Label1.Caption = Format$(b, "yyyy/mm/dd hh:mm:ss")
> End If

> End Sub

Esto es un problema, porque si valido solo el SystemTime (UTC), un
fraude puede ser, adelantan en 3 horas el reloj y atrazan en 3 horas
la zona horaria seleccionada, entonces el UTC termina siendo el mismo
y el servidor lo valida, y eso no dá.

Necesitaría si o si una forma de obtener el valor GTM configurado en
windows.


http://vbcity.com/forums/p/1970/10342.aspx

El atributo "Bias" de la estructura TIME_ZONE_INFORMATION contiene la
cantidad de minutos que hay que SUMAR a la hora actual para obtener la hora
GMT.

Para Caracas, que está en GMT -4:30, contiene 270. Para Kabul, en GMT +4:30,
contiene -270.

El ejemplo en vbcity funciona sin modificaciones.

Salud!



Thanks very much!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida