Re: Parsing timestamps?

Liste des GroupesRevenir à cl forth 
Sujet : Re: Parsing timestamps?
De : ruvim.pinka (at) *nospam* gmail.com (Ruvim)
Groupes : comp.lang.forth
Date : 06. Oct 2024, 14:22:53
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vdu2vc$151ad$3@dont-email.me>
References : 1 2 3
User-Agent : Mozilla Thunderbird
On 2024-10-06 15:59, dxf wrote:
On 6/10/2024 9:48 pm, Ruvim wrote:
On 2024-10-06 11:51, dxf wrote:
Is there an easier way of doing this?  End goal is a double number representing centi-secs.
>
>
empty decimal
>
: SPLIT ( a u c -- a2 u2 a3 u3 )  >r 2dup r> scan 2swap 2 pick - ;
: >INT ( adr len -- u )  0 0 2swap >number 2drop drop ;
>
: /T ( a u -- $hour $min $sec )
    2 0 do  [char] : split  2swap  dup if 1 /string then  loop
    2 0 do  dup 0= if 2rot 2rot then  loop ;
>
: .T  2swap 2rot  cr  >int . ." hr "  >int . ." min " >int . ." sec " ;
>
s" 1:2:3"    /t .t
s" 02:03"    /t .t
s" 03"       /t .t
s" 23:59:59" /t .t
s" 0:00:03"  /t .t
>
>
I would use `split-string` factor as:
>
   : /t ( sd.time -- sd.hour sd.min sd.sec )
     s" :" split-string
     s" :" split-string
   ;
>
   \ Where
>
   : split-string
     ( sd.text sd.separator -- sd.left sd.right | sd.text 0 0 )
     dup >r  3 pick >r  ( R: u.[sd.separator][1] addr.[st.text][2] )
     search 0= if 2rdrop 0 0 exit then ( addr u )
     over r@ - r> swap  2swap r> /string
   ;
 It fails with s" 03".  The test case may be unreasonable so I tried
s" :03"  however it also fails.  The complication is most tools scan
from the beginning whereas we would like to scan from the end.
You did not provide output for test cases.
I expect that "03" is equivalent to "03:00:00", which means 3 hours, 0 minutes, 0 seconds.
And ":03" is equivalent to "00:03:00", which means 0 hours, 3 minutes, 0 seconds.
My above implementation for `/t` produces:
   s" 1:2:3"   /t .t   \ "1 hr 2 min 3 sec"
   s" 02:03"   /t .t   \ "2 hr 3 min 0 sec"
   s" 03"      /t .t   \ "3 hr 0 min 0 sec"
   s" :03"     /t .t   \ "0 hr 3 min 0 sec"
What is wrong?
Maybe your `>int` works incorrectly with an empty string?
For testing I use:
   : >int ( sd.number -- u ) 0. 2swap >number 2drop drop ;
   \ the empty string produces 0
--
Ruvim

Date Sujet#  Auteur
6 Oct 24 * Parsing timestamps?45dxf
6 Oct 24 +* Re: Parsing timestamps?8mhx
6 Oct 24 i+* Re: Parsing timestamps?3dxf
6 Oct 24 ii`* Re: Parsing timestamps?2dxf
7 Oct 24 ii `- Re: Parsing timestamps?1dxf
7 Jun13:38 i`* Re: Parsing timestamps?4B. Pym
7 Jun15:36 i `* Re: Parsing timestamps?3dxf
7 Jun18:07 i  `* Re: Parsing timestamps?2LIT
8 Jun03:38 i   `- Re: Parsing timestamps?1dxf
6 Oct 24 +* Re: Parsing timestamps?5Ruvim
6 Oct 24 i`* Re: Parsing timestamps?4dxf
6 Oct 24 i `* Re: Parsing timestamps?3Ruvim
6 Oct 24 i  +- Re: Parsing timestamps?1Ruvim
6 Oct 24 i  `- Re: Parsing timestamps?1Ruvim
6 Oct 24 +* Re: Parsing timestamps?6FFmike
6 Oct 24 i`* Re: Parsing timestamps?5FFmike
7 Oct 24 i `* Re: Parsing timestamps?4dxf
7 Oct 24 i  `* Re: Parsing timestamps?3FFmike
7 Oct 24 i   `* Re: Parsing timestamps?2dxf
7 Oct 24 i    `- Re: Parsing timestamps?1FFmike
6 Oct 24 +* Re: Parsing timestamps?2Anthony Howe
7 Oct 24 i`- Re: Parsing timestamps?1dxf
7 Oct 24 +* Re: Parsing timestamps?9albert
7 Oct 24 i`* Re: Parsing timestamps?8dxf
7 Oct 24 i `* Re: Parsing timestamps?7sjack
8 Oct 24 i  `* Re: Parsing timestamps?6dxf
8 Oct 24 i   +* Re: Parsing timestamps?3Ahmed
8 Oct 24 i   i+- Re: Parsing timestamps?1dxf
8 Oct 24 i   i`- Re: Parsing timestamps?1sjack
8 Oct 24 i   `* Re: Parsing timestamps?2sjack
9 Oct 24 i    `- Re: Parsing timestamps?1dxf
8 Oct 24 +* Re: Parsing timestamps?3albert
8 Oct 24 i`* Re: Parsing timestamps?2dxf
8 Oct 24 i `- Re: Parsing timestamps?1Ahmed
9 Oct 24 +* Re: Parsing timestamps?4alaa
10 Oct 24 i+* Re: Parsing timestamps?2dxf
10 Oct 24 ii`- Re: Parsing timestamps?1alaa
16 Oct 24 i`- Re: Parsing timestamps?1Hans Bezemer
18 Oct 24 `* Re: Parsing timestamps?7Gerry Jackson
19 Oct 24  `* Re: Parsing timestamps?6dxf
28 Oct 24   `* Re: Parsing timestamps?5Hans Bezemer
29 Oct 24    `* Re: Parsing timestamps?4dxf
29 Oct 24     `* Re: Parsing timestamps?3Hans Bezemer
30 Oct 24      `* Re: Parsing timestamps?2dxf
31 Oct 24       `- Re: Parsing timestamps?1dxf

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal