Autor Thema: Date/Time in Formelsprache  (Gelesen 2450 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Date/Time in Formelsprache
« am: 31.10.04 - 21:36:56 »
Ich extrahiere aus einem String ein Teilstring.

Dieses Teilstring ist wie folgt aufgebaut:

_Teilstring := "31.10.2004 16:25:16".

Quelle für dieses String ist folgendes LS: Format$(Now, "dd.mm.yyyy hh:mm:ss").
Dieser Aufbau ist 100% verlässlich.

@Date gibt ja nur ein Datum zurück, @Time nur die Uhrzeit.

Ich muss jetzt dieses Teilstring 100% zuverlässig in ein Datum+Zeit umwandeln in Formelsprache. Ziel ist die Anzeige in einer View.

Wie bekomme ich trotzdem 100% verlässlich dieses String in die View?
@TextToTime traue ich da nicht, was ist wenn es ein 10.10.2004 ist?
Via @Middle(....) kann ich die Werte des Strings sauber auslesen.

Wie kann ich diese wieder zusammensetzen? Das Ergebnis soll 1 Spalte sein (nicht 2) und sortierbar sein etc.
« Letzte Änderung: 01.11.04 - 12:22:36 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Date/Time in Formelsprache
« Antwort #1 am: 31.10.04 - 23:43:37 »
Matthias, ich möchte gerne helfen. Ich habe gerade eine grössere Fremdapplikation geradeziehen müssen, die sich um Datumsformate keinerlei (ernsthafte) Gedanken gemacht hat.

Ich habe aber noch ein paar Fragen:
1) Warum wird der DateTime-Wert nicht entsprechend abgespeichert ? Warum wird hier über ein Textfeld gearbeitet, wenn man dann doch wieder Date/Time haben will ?
2) Du vertraust Format$ "zu 100%". Das halte ich für gewagt.
3) Warum vertraust Du dann nicht nicht @TextToTime ?
4) Was meinst Du mit dem 10.10.2004 ?

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Date/Time in Formelsprache
« Antwort #2 am: 01.11.04 - 11:11:41 »
Hi Bernhard,

Zitat
1) Warum wird der DateTime-Wert nicht entsprechend abgespeichert ? Warum wird hier über ein Textfeld gearbeitet, wenn man dann doch wieder Date/Time haben will ?
Es ist eine bestehende App mit einigen Doks. Es wird 1 Textfeld geschrieben mit mehreren Dingen (Username, Datum etc.).
Das Datum setzt sich so zusammen: Format$(Now, "dd.mm.yyyy hh:mm:ss"). Mittelfristig (ab nächstes Jahr) stehen größere Änderungen in der DB an. Dabei werde ich dann hier mit einzelnen Feldern arbeiten. Steht schon auf der ToDo-Liste :-)

Zitat
2) Du vertraust Format$ "zu 100%". Das halte ich für gewagt.
Wirklich? Ich dachte, wenn "dd.mm.yyyy hh:mm:ss" vorgegeben wird, dass dies dann in dieser Reihenfolge aufgebaut wird - und ein Ergebnis à la mm.dd.yyyy somit ausgeschlossen werden kann.

Zitat
3) Warum vertraust Du dann nicht nicht @TextToTime ?
Ich weiß nicht 100% wie das intern arbeitet. Ergibt @TextToTime(01.10.2004 05:05:05) immer den 1. Oktober? Kann da nicht auch der 10. Januar rauskommen?

Zitat
4) Was meinst Du mit dem 10.10.2004 ?
Sorry, das war ein Tippfehler  ;) Sollte 01.10.2004 sein (siehe Antwort auf Frage 3).


Danke!

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Glombi

  • Gast
Re: Date/Time in Formelsprache
« Antwort #3 am: 01.11.04 - 11:17:20 »
Wie ein Date/Time Wert interpretiert wird, hängt von der BS Einstellung ab, die zur Laufzeit gilt.
D.h.
ein @TextToTime(01.10.2004 05:05:05) kann beides ergeben: 1. Oktober oder 10. Januar.

Effekte gibt es oft, wenn sowas in servergestützten Agenten oder Ansichten verwendet wird und der Server eine andere BS Einstellung hat.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Date/Time in Formelsprache
« Antwort #4 am: 01.11.04 - 11:34:39 »
Wenn Du wirklich sicher Deinen Datumsstring aufbauen kannst (mir ist noch nicht ganz klar, wie dort die Eingabe erfolgt), dann kannst Du @Date mit @Adjust verknüpfen:

datetimevar := @Adjust (@Date (YYYY; MM; DD); hh; mm; ss)

So bist Du auf jeden Fall unabhängig vom BS.

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Date/Time in Formelsprache
« Antwort #5 am: 01.11.04 - 11:44:49 »
Ah, ok, danke Bernhard !
Werde das gleich mal ausführlich testen.

Zitat
mir ist noch nicht ganz klar, wie dort die Eingabe erfolgt

Die "Eingabe" erfolgt über eine LotusScript-Function, ausgelöst von User (Workflow-Buthong).
Dabei wird eben ein String zusammengestellt, Auszug:
session.Username & "###" & Format$(Now, "dd.mm.yyyy hh:mm:ss") & "###" & docThis.Status(0)
Wie Du schon angedeutet hast oben: Das schreit danach, diese Werte besser in einzelne Felder zu schreiben, zumal z.B. Status auch zusätzlich noch geschrieben wird  :P
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Date/Time in Formelsprache
« Antwort #6 am: 01.11.04 - 11:59:54 »
So ein Blödsinn, was ich da geschrieben habe ! Es reicht doch einfach

@Date (YYYY; MM; DD; hh; mm; ss)

statt der kruden Konstruktion ...

Auf jeden Fall wäre es aber besser, Datums-/Zeitwerte von Beginn an gesondert zu erfassen. Wenn Du die Chance dazu noch hast, würde ich nicht länger überlegen.

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Date/Time in Formelsprache
« Antwort #7 am: 01.11.04 - 12:14:18 »
Sicher Bernhard?

In der Help steht nämlich "Rückgabe ohne Zeitkomponenten":

Zitat
@Date
Konvertiert die Zahlen für die verschiedenen Komponenten eines Zeit- und Datumswerts in den Zeit- und Datumswert.
Rückgabewert
ZeitDatumGekürzt
Zeit und Datum. Das den an @Date übergebenen Parametern entsprechende Datum ohne Zeitkomponenten.

Dies war der eigentliche Grund meiner Frage.
Aber ich teste das jetzt mal.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Date/Time in Formelsprache
« Antwort #8 am: 01.11.04 - 12:18:30 »
Statt @Date könnte man auch @Time nehmen. Und da ist auch der Text der Hilfe zielweisender:

Zeit und Datum. Die der an @Time übergebenen Parametern entsprechende Uhrzeit ohne Datumskomponenten, falls der Parameter vom Typ ZeitDatum ist.

Aber funktionieren tut's auch bei @Date  ;)

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Date/Time in Formelsprache
« Antwort #9 am: 01.11.04 - 12:22:25 »
Seltsam,

_Date := @Date(2004; 11; 1; 12; 1; 18);
@Prompt([OK]; "Test"; @Text(_Date))


Gibt in der Msgbox Datum + Uhrzeit aus: 01.11.2004 12:01:18.

Stimmt wohl die Designerhilfe nicht ganz.

Auch dier 6.5er Designerhilfe schreibt zu @Date:
Zitat
Return value
truncatedTimeDate
Time-date. The date corresponding to the parameters that you sent to @Date, minus any time components.

Man beachte das "minus any time components.".

Wie auch immer, so gehts jedenfalls (auch in ND6)  :)

Danke nochmal.

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Date/Time in Formelsprache
« Antwort #10 am: 01.11.04 - 12:29:06 »
Wie gesagt - siehe die korrektere Aussage zu @Time.

d_ := @Date (2004; 11; 1; 12; 27; 00)
@Text (d_)

ergibt "1.11.2004 12:27:00"

Jedoch ergibt (in Ergänzung zu oben)
@Text (@Date (d_))

"1.11.2004"

Es kommt also auf die Parameter an.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz