[Gelöst]ExcelBuffer - Uhrzeit

17. Februar 2014 19:09

Hallo zusammen,

ich importiere mir gerade ein paar Werte aus Excel mit dem Excelbuffer.
Soweit ist das ja auch kein Problem, nur hab ich mir grad ein paar Zeilen im Buffer angeschaut (hatte Ihn nach dem Import noch nicht gelöscht, um die Werte zu prüfen)
Naja und da seh ich, dass in der Spalte "Cellvalue as Text" bei einer Uhrzeitzelle "16:00:00" steht und im Excelblatt allerdings "15:00"...komisch
Als Numberformat hat er h:mm verwendet.
Ist ja nicht so tragisch, zieh ich halt ne Stunde von den Werten des Buffers ab, aber mich würde interessieren, warum er das so einliest?
Zuletzt geändert von sweikelt am 18. Februar 2014 11:16, insgesamt 1-mal geändert.

Re: ExcelBuffer - Uhrzeit

17. Februar 2014 20:07

Wäre mir im Zusammenhang mit Excel neu, aber: Ist das importierende System noch auf Sommerzeit gestellt?

Re: ExcelBuffer - Uhrzeit

18. Februar 2014 10:06

Hallo Natalie,

das importierende System (mein Entwicklungsserver) ist ordnungsgemäß auf Winterzeit eingestellt :(

wenn ich das gleiche in 2009 [CC] einlese, erhalte ich die korrekte Uhrzeit (natürlich im 1/24-Format -> also 0,625 für 15Uhr)
liegt vielleicht am NST???

ich probiere mal weiter und meld mich dann - vielleicht find ich ja den Grund :)

EDIT:
TIME gibt mir auch die korrekte Uhrzeit wieder

Re: ExcelBuffer - Uhrzeit

18. Februar 2014 10:14

Ich denke, es liegt mal wieder irgendwie an UTC/local time zone. In der config auf dem Server gibt es eine Einstellung, um dem Server zu sagen, ob er mit UTC der mit der lokalen Zeit arbeiten soll. Vielleicht liegt es daran?

Re: ExcelBuffer - Uhrzeit

18. Februar 2014 10:29

in der Config steht UTC
trotzdem darf der ExcelBuffer aus meiner Sicht die einzulesenden Daten doch garnicht verändern...wenn ja 15 steht, darf er keine 16 draus machen

EDIT:

wenn ich es auf "Server Time Zone" stelle, dann tritt der Effekt ebenso auf

Re: ExcelBuffer - Uhrzeit

18. Februar 2014 10:39

Doch, wenn er denkt, daß Zeiten in UTC hereinkommen, dann gilt doch für Deutschland UTC+1, also 16:00h. Aus meiner Sicht ist das korrekt. Oder verstehe ich da etwas gerade nicht richtig?

Re: ExcelBuffer - Uhrzeit

18. Februar 2014 10:49

HattrickHorst hat geschrieben:Doch, wenn er denkt, daß Zeiten in UTC hereinkommen, dann gilt doch für Deutschland UTC+1, also 16:00h. Aus meiner Sicht ist das korrekt. Oder verstehe ich da etwas gerade nicht richtig?

hmmmm - klingt plausibel -> nur habe ich ja vorhin auf Server Time Zone umgestellt, also muss er ja denken, dass die Daten im UTC+1 Format reinkommen und darf somit nicht erhöhen

EDIT:

Im ExcelBuffer wird
Code:
DateTime := DateTimeHelper.FromOADate(Decimal);

verwendet - hier gibt er bereits 16 Uhr zurück (Decimal = 0.625) -> also arbeitet die .Net-Klasse wohl in der "falschen" Zeitzone

was Ähnliches zum Thema
http://support.microsoft.com/kb/2836457
---------

somit wäre der Code für den ExcelBuffer.
Code:

IF STRPOS(FormatString,':') <> 0 THEN BEGIN
  // Excel Time is stored in OADate format
  Decimal -= 0.04166667;
  DateTime := DateTimeHelper.FromOADate(Decimal);
  "Cell Type" := "Cell Type"::Time;
  "Cell Value as Text" := FORMAT(DT2TIME(DateTime));
  EXIT;
END;


dann klappts auch mit dem Nachbarn - nur ist das natürlich keine entgültige Lösung -> ich werde den Buffer auch nicht anpassen, sondern bei der späteren Verarbeitung der Daten einfach eine Stunde abziehen.

Re: [Gelöst]ExcelBuffer - Uhrzeit

18. Februar 2014 11:55

Ah, ok. War eigentlich auch klar, daß es vorher irgendwo sein mußte und nicht die Servereinstellung, denn du speicherst ja nicht in ein Feld vom Typ Date, Time oder DateTime, sondern Text.

Kannst du über die DateTime-Klasse keinen Offset oder sowas setzen?

Re: [Gelöst]ExcelBuffer - Uhrzeit

18. Februar 2014 12:10

Kannst du über die DateTime-Klasse keinen Offset oder sowas setzen?


ich sehe da auf die schnelle keine Möglichkeit - die Frage wäre dann ja aber auch, wie ich dieses Offset berechne - damit es in anderen Zeitzonen ja auch funktioniert.
wichtig ist, dass man weiß, dass die Werte "falsch" rüberkommen können - also lieber nochmal prüfen und dann nachträglich im Code der Verarbeitung die Werte korrigieren

Re: [Gelöst]ExcelBuffer - Uhrzeit

18. Februar 2014 19:26

Kannst du nicht sowas machen?
Code:
DateTime := DateTimeHelper.FromOADate(Decimal).ToUniversalTime();

Ich dachte, in 2013 R2 sollte es möglich sein, Member von Membern aufzurufen?