Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

GMT auf lokale Zeit rechnen

Begonnen von boehnli01, Juli 28, 2013, 14:50:37

⏪ vorheriges - nächstes ⏩

boehnli01

Hallo zusammen, ich habe eine Tabelle die mir im Feld A das Ende (Zeit) eines Prozesse anzeigt.

Diese Zeit ist aber nicht die wirkliche Zeit sondern die GMT Zeit. Gibt es eine elegante Lösung über eine Abfrage die genaue Zeit zu bekommen.

Danke Cédric

MzKlMu

#1
Hallo,
die GMT zeit, ist doch aber unser gültige Zeit, die im Sommer um eine Stunde verschoben ist.

Kannst Du das mal genauer erklären?
Was siehst Du für eine Zeitdifferenz zwischen UMT und unserer momentanen Zeit?

Und der Wechsel zwischen Sommer und Normalzeit muss auch berücksichtigt werden
, daher ist die Umrechnerei auch Datumsabhängig.
Gruß Klaus

boehnli01

Kann sein das GMT der falsche Ausdruck ist.

Das Ende Prozesses zeigt es mir immer 2 Stunden früher an als es eigentlich ist. Das heisst momentan zeitgt es mir im SAP 13:05 anstatt 15:05 an.
Richtig, je nach Jahreszeit ist es entweder 1 oder 2 Stunden Differenz sein.

Danke.


MzKlMu

#3
Hallo,
Du kannst in der Abfrage 1 oder 2 Stunden addieren.

AktuelleZeit: ZeitfeldAusSAP + 1/24
für eine Stunde.
2/24 für 2 Stunden.

Aber da das ja Datumsabhängig ist, muss das Datum beachtet werden.

Nachtrag:
UTC-Zeit (Universal Time Coordinated, auch als GMT, Greenwich Mean Time bekannt)
Unsere Zeit ist im Winter UTC/UMT +1 und im Sommer UTC/UMT +2
Wenn also Deine Tabelle Sommer/Winterzeit Daten hat, muss zusätzlich noch das Dateum ausgewertet werden. Ich habe aber im Moment keine Lösung zur automatischen Ermittlung ob Sommer oder Winterzeit. Es wäre auch zu klären, ob dies SAP berücksichtigt, wenn ja, wäre es bei Access überflüssig.
Gruß Klaus

daolix

GMT war früher, heute heist das UTC. Diese Zeit ändert sich nicht durch Sommer/Winterzeit und oder Zeitzonen. Unsere Zeitzone ist GMT + 1.
Zur Berechnung der Localzeit (GMT+-x) aus der UTC:

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

Type TIME_ZONE_INFORMATION
    Bias As Long
    StandardName(31) As Integer
    StandardDate As SYSTEMTIME
    StandardBias As Long
    DaylightName(31) As Integer
    DaylightDate As SYSTEMTIME
    DaylightBias As Long
End Type

Declare Function SystemTimeToTzSpecificLocalTime Lib "KERNEL32.DLL" _
    ( _
        ByRef TZI As TIME_ZONE_INFORMATION, _
        ByRef ust As SYSTEMTIME, _
        ByRef lst As SYSTEMTIME _
    ) As Long

Declare Function VariantTimeToSystemTime Lib "OLEAUT32.DLL" _
    ( _
        ByVal vbtime As Double, _
        lpSystemTime As SYSTEMTIME _
    ) As Long
   
Declare Function SystemTimeToVariantTime Lib "OLEAUT32.DLL" _
    ( _
        lpSystemTime As SYSTEMTIME, _
        vbtime As Double _
    ) As Long
   
Declare Function GetTimeZoneInformation Lib "KERNEL32.DLL" _
    ( _
        lpTimeZoneInformation As TIME_ZONE_INFORMATION _
    ) As Long

   


Function UTC2Local(ByVal dDate As Double) As Date
    Dim dbl As Double
    Dim TZI As TIME_ZONE_INFORMATION
    Dim lst As SYSTEMTIME, ust As SYSTEMTIME
    VariantTimeToSystemTime dDate, ust
    If GetTimeZoneInformation(TZI) > 0 Then
        SystemTimeToTzSpecificLocalTime TZI, ust, lst
        SystemTimeToVariantTime lst, dbl
    End If
    UTC2Local = dbl
End Function


der Aufruf ist dann z.B.
UTC2Local(CDate("28.07.2013 13:59:40"))oderUTC2Local(CDate("28.11.2013 13:59:40"))






MzKlMu

Hallo,
kleiner Einspruch, die UTC (UMT) Zeit ändert sich nicht. Aber unsere aktuelle Zeit ist Sommer/Winterzeit abhängig.
Im Winter (Normalzeit) UTC/GMT+1 und in der Sommerzeit UTC/GMT+2.

Die obige Funktion berücksichtigt dies.
Gruß Klaus

daolix

Hallo

häh wieso jetzt einspruch?
Zitat von: MzKlMudie UTC (UMT) Zeit ändert sich nicht
Zitat von: daolix...heute heist das UTC.Diese Zeit ändert sich nicht durch Sommer/Winterzeit und oder Zeitzonen

Ich erkenn jetzt in den beiden Aussagen keinen Widerspruch, beide vermelden das selbe. Hab ich jetzt was nicht geblickt?


MzKlMu

#7
Hallo,
Du hast in meinem Zitat mein Aber ... unterschlagen.  ;D
mein Einspruch galt für diese Zeile:
ZitatUnsere Zeitzone ist GMT + 1.
Es ist eben nicht GMT+1, sondern im Sommer ist unsere Localzeit GMT/UTC+2.
Gruß Klaus

daolix

#8
Diese Angabe galt jetzt eher der auch im normalen Sprachgebrauch verwendeten datumsunabhängigen Bestimmung der Zeitzone.

ZitatDu hast in meinem Zitat mein Aber ... unterschlagen
Stimmt das hab ich. Aba nicht nur das. ich ich habs auch nicht gelesen. auweia  ;D


database

Hallo,

entschuldigt, wenn ich mich auch noch in eure Diskussion einbringe ...

Zitatim normalen Sprachgebrauch verwendeten datumsunabhängigen Bestimmung der Zeitzone

... im 'normalen Sprachgebrauch' heißt unsere Zeitzone 'Central European Time' bzw. 'Mitteleuropäische Zeit' (CET/MEZ)

und zur Sommerzeit 'Mitteleuropäische Sommerzeit' bzw. 'Central European Summer Time' (MESZ/CEST/CEDT)

Wobei es ja völlig wurscht ist ob ich da jetzt wie MzKlMu (was ja auch mein Zugang ist) GMT nenne oder (bürokratensesselsichernd) UTC
ist diese eigentlich nichts anderes als ein weltweit gültiger unveränderbarer Referenzpunkt um die Unterschiede zu den einzelnen Zeitzonen zu bestimmen.

Da nun diese Zeitzonen aber unterschiedliche Lokalzeiten liefern ist es m.E. nicht unbedingt vorteilhaft die Berechnung zu fixieren.
SAP liefert eine Systemzeit, die vom Standort des/der Server abhängig ist - nach Angabe von 'boehnli01' nehme ich an, dass sich dieser direkt in der GMT befindet.




daolix

#10
Zitat... im 'normalen Sprachgebrauch' heißt unsere Zeitzone 'Central European Time' bzw. 'Mitteleuropäische Zeit' (CET/MEZ)
und mir isses jetzt auch wurscht ob das Teil bürokratensesselsichernd CET oder MEZ genannt wird, für mich sind alle diese Bezeichnungen richtig. Wenn ich irgendwelche Zeitzonen bei der Installation angeben muss steht da CET, MEZ oder halt GMT+1.

Zitatist diese eigentlich nichts anderes als ein weltweit gültiger unveränderbarer Referenzpunkt um die Unterschiede zu den einzelnen Zeitzonen zu bestimmen.
...
Da nun diese Zeitzonen aber unterschiedliche Lokalzeiten liefern ist es m.E. nicht unbedingt vorteilhaft die Berechnung zu fixieren.
...
SAP kenn ich nur vom Namen her, und die Frage war ja "GMT auf lokale Zeit rechnen". Da UTC/GMT ja " ein weltweit gültiger unveränderbarer Referenzpunkt" ist können wir die Berechnung schon fixieren.
Evtl kann man bei SAP angeben welche Zeit (local oder UTC) gespeichert werden soll. Hilfreicher ist die UTC schon ( NTFS speicht auch nur die UTC) da sonst die Zeitzone mit gespeichert werden müsst, sprich will man verschiedene SAP-server abfragen muss man imma wissen wo das teil steht.


database

Hallo,

bitte meine Wortmeldung nicht als negative Kritik an den bisher getätigten Aussagen aufzufassen  ;)

Zitatkönnen wir die Berechnung schon fixieren
Dem Sinn nach ja - da hast du natürlich auch zweifelsfrei recht.

Es kommt halt auch darauf an, ob nun diese ganze Anwendung nur an einem bestimmten Ort unter unveränderlichen Vorgaben/Parametern
ausgeführt wird oder eventuell auch an einem anderen Unternehmensstandort der eine geänderte Berechnung erforderlich macht.

Das wollte ich mit 
Zitatnicht unbedingt vorteilhaft die Berechnung zu fixieren
ausdrücken.

M.W. verwendet SAP serverseitig UTC/GMT als Referenzzeit und konvertiert Anwendungsseitig nach der angegebenen Zeitzone.

Zitatwill man verschiedene SAP-server abfragen muss man imma wissen wo das teil steht
nicht unbedingt, da ja nach der 'clientseitig' angegebenen Zeitzone auf UTC bezogen konvertiert wird - wenn dieses als Vorgabe festgelegt wird.