[Delphi6] UnixToDateTime een uur ernaast?

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik zet een Unix timestamp om naar een TDateTime mbv de UnixToDateTime functie (deze zit alleen in Delphi 6, in de unit DateUtils). Maar deze zit er gewoon precies een uur naast. En als ik hem met PHP omzet naar een leesbaar formaat dan is het wel goed. Hoe kan dit? Kan ik er zonder pardon 3600 seconden bij op tellen om het te corrigeren?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
zomer/wintertijd?

Human Bobby


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 29 december 2001 19:56 schreef Sander17 het volgende:
zomer/wintertijd?
Waarom doet PHP het wel goed dan?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op zaterdag 29 december 2001 19:57 schreef jelmervos het volgende:
Waarom doet PHP het wel goed dan?
Omdat php veeel beter is dan delphi? ;)

ik denk trouwens dat het met timezones te maken heeft.

zitten wij niet op GMT +1 ?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 29 december 2001 22:17 schreef PlayR het volgende:

[..]

ik denk trouwens dat het met timezones te maken heeft.

zitten wij niet op GMT +1 ?
Zo'n timestamp geeft toch aan hoeveel seconden vanaf een bepaalde datum (1970 ofzo), daar heeft een timezone toch niks mee te maken? En ik kan er niks over vinden in de Help of met Google.


De UnixToDate time functie:
code:
1
2
3
4
function UnixToDateTime(const AValue: Int64): TDateTime;
begin
  Result := AValue / SecsPerDay + UnixDateDelta;
end;

Waar:
HoursPerDay = 24;
MinsPerDay = HoursPerDay * 60;
SecsPerDay = MinsPerDay * 60;

en:
UnixDateDelta = 25569;

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Onno
  • Registratie: Juni 1999
  • Niet online
Op zaterdag 29 december 2001 22:40 schreef jelmervos het volgende:
Zo'n timestamp geeft toch aan hoeveel seconden vanaf een bepaalde datum (1970 ofzo), daar heeft een timezone toch niks mee te maken?
Tuurlijk wel. 1-1-1970 0:00 is hier een uur langer geleden dan in GMT. :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 29 december 2001 22:43 schreef Onno het volgende:

[..]

Tuurlijk wel. 1-1-1970 0:00 is hier een uur langer geleden dan in GMT. :)
Dus PHP corigeert zelf al mbv de timezone?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op zaterdag 29 december 2001 22:40 schreef jelmervos het volgende:
Zo'n timestamp geeft toch aan hoeveel seconden vanaf een bepaalde datum (1970 ofzo), daar heeft een timezone toch niks mee te maken? En ik kan er niks over vinden in de Help of met Google.
Tuurlijk wel!
Het geeft het aantal seconden van 1970 in het GMT timezone. PHP zal hier heel leuk rekening meehouden door meteen rekening te houden met de timezone van de server. maar delphi doet dit kennelijk niet.

wat je met die functie doet dat weet ik niet precies (schaam)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 29 december 2001 22:45 schreef PlayR het volgende:

[..]

Tuurlijk wel!
Het geeft het aantal seconden van 1970 in het GMT timezone. PHP zal hier heel leuk rekening meehouden door meteen rekening te houden met de timezone van de server. maar delphi doet dit kennelijk niet.

wat je met die functie doet dat weet ik niet precies (schaam)
Oke, dan weet ik dat ook weer.
Moet dus even corrigeren. :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op zaterdag 29 december 2001 22:46 schreef jelmervos het volgende:
Oke, dan weet ik dat ook weer.
Moet dus even corrigeren. :)
ja, lijkt me :)

Verwijderd

Check even het volgende:

-Zet je comp op een andere tijdzone
-Wissel zomer/winter tijd

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 29 december 2001 23:02 schreef dev het volgende:
Check even het volgende:

-Zet je comp op een andere tijdzone
-Wissel zomer/winter tijd
Gedaan, maar die timestamp is gelijk een GMT, en PHP corigeert dit, maar Delphi dus niet. Moet ik zelf ff fixen.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Op zaterdag 29 december 2001 23:09 schreef jelmervos het volgende:
Gedaan, maar die timestamp is gelijk een GMT, en PHP corigeert dit, maar Delphi dus niet. Moet ik zelf ff fixen.
Hoe doe je het nou? tijdzone opzoeken -> tijd = tijdzone * 3600? of gewoon tijd = tijd + 3600 ?

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 29 december 2001 23:25 schreef PlayR het volgende:

[..]

Hoe doe je het nou? tijdzone opzoeken -> tijd = tijdzone * 3600? of gewoon tijd = tijd + 3600 ?
Ik denk dat ik de timezone ga opvragen, hier is een API call voor. :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Uuhmm, ik zit ook nog met zomer-/wintertijd

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
[ helaas ] :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Ik zag dit topic even staan in m'n list. Heb je t opgelost? Je kunt met GetTimeZoneInformation Daylight status, StandardBias, DayLightBias e.d. opvragen.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Zo goed als, zie HotTopic :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
function TimeZoneBias: Double;
var
  ATimeZone: TTimeZoneInformation;
begin
  if (GetTimeZoneInformation(ATimeZone) = TIME_ZONE_ID_DAYLIGHT) then begin
    Result := ATimeZone.Bias + ATimeZone.DaylightBias;
  end else begin
    Result := ATimeZone.Bias + ATimeZone.StandardBias;
  end;
  Result := Result / 1440;
end;

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1