Re: Parsing timestamps?

Liste des GroupesRevenir à cl forth 
Sujet : Re: Parsing timestamps?
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.forth
Date : 11. Jun 2025, 10:25:50
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <102bi2q$1t4tk$1@dont-email.me>
References : 1 2 3 4
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:

B. Pym wrote:
 
mhx wrote:
 
On Sun, 6 Oct 2024 7:51:31 +0000, 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
 
Why don't you use the fact that >NUMBER returns the given
string starting with the first unconverted character?
SPLIT should be redundant.
 
-marcel
 
: CHAR-NUMERIC?   48 58 WITHIN ;
: SKIP-NON-NUMERIC ( adr u -- adr2 u2)
  BEGIN
    DUP IF  OVER C@ CHAR-NUMERIC? NOT  ELSE  0 THEN
  WHILE
    1 /STRING
  REPEAT ;
 
: SCAN-NEXT-NUMBER ( n adr len -- n2 adr2 len2)
  2>R  60 *  0.  2R> >NUMBER 
  2>R  D>S +  2R> ;
 
: PARSE-TIME  ( adr len -- seconds)
  0 -ROT
  BEGIN
    SKIP-NON-NUMERIC
    DUP
  WHILE
    SCAN-NEXT-NUMBER
  REPEAT
  2DROP ;
 
S" hello 1::36 world" PARSE-TIME CR .
96  ok
 
 
: SCAN-NUMBER-OR-SKIP ( n adr len -- n' adr' len')
  DUP >R
  0 0 2SWAP >NUMBER
  DUP R> =
  IF  2SWAP 2DROP  1 /STRING
  ELSE
    2>R D>S SWAP 60 * + 2R>
  THEN ;
 
: PARSE-TIME  ( adr len -- seconds)
  0 -ROT
  BEGIN
    DUP
  WHILE
    SCAN-NUMBER-OR-SKIP
  REPEAT
  2DROP ;
 
S" hi 5 or 1 is 44 ho " PARSE-TIME CR .
18104
 

Using local variables.

: SCAN-NUMBER-OR-SKIP { n adr len -- n' adr' len' }
  0. adr len >NUMBER  { adr' len' } D>S { m }
  len' len =
  IF  n adr len  1 /STRING
  ELSE
    n 60 * m + adr' len'
  THEN ;
 

Date Sujet#  Auteur
6 Oct 24 * Parsing timestamps?77dxf
6 Oct 24 +* Re: Parsing timestamps?40mhx
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?36B. Pym
7 Jun15:36 i +* Re: Parsing timestamps?21dxf
7 Jun18:07 i i`* Re: Parsing timestamps?20LIT
8 Jun03:38 i i `* Re: Parsing timestamps?19dxf
9 Jun14:21 i i  `* Re: Parsing timestamps?18Hans Bezemer
9 Jun14:34 i i   `* Re: Parsing timestamps?17LIT
9 Jun20:31 i i    `* Re: Parsing timestamps?16Hans Bezemer
9 Jun21:00 i i     `* Re: Parsing timestamps?15LIT
10 Jun03:31 i i      +* Re: Parsing timestamps?4dxf
10 Jun08:32 i i      i+* Re: Parsing timestamps?2mhx
10 Jun09:30 i i      ii`- Re: Parsing timestamps?1dxf
10 Jun11:10 i i      i`- Re: Parsing timestamps?1LIT
10 Jun10:52 i i      +* Re: Parsing timestamps?2LIT
10 Jun14:12 i i      i`- Re: Parsing timestamps?1Hans Bezemer
10 Jun12:08 i i      +* Re: Parsing timestamps?2LIT
10 Jun13:56 i i      i`- Re: Parsing timestamps?1LIT
10 Jun13:07 i i      +* Re: Parsing timestamps?2Stephen Pelc
10 Jun15:06 i i      i`- Re: Parsing timestamps?1Anton Ertl
10 Jun13:48 i i      +* Re: Parsing timestamps?3LIT
10 Jun21:56 i i      i`* Re: Parsing timestamps?2LIT
11 Jun10:18 i i      i `- Re: Parsing timestamps?1Hans Bezemer
10 Jun15:56 i i      `- Re: Parsing timestamps?1Hans Bezemer
9 Jun13:34 i +- Re: Parsing timestamps?1B. Pym
10 Jun10:18 i `* Re: Parsing timestamps?13B. Pym
10 Jun11:32 i  +* Re: Parsing timestamps?11dxf
10 Jun11:43 i  i`* Re: Parsing timestamps?10LIT
10 Jun15:58 i  i `* Re: Parsing timestamps?9dxf
10 Jun16:39 i  i  +- Re: Parsing timestamps?1LIT
10 Jun18:34 i  i  `* Re: Parsing timestamps?7LIT
10 Jun18:39 i  i   +- Re: Parsing timestamps?1LIT
11 Jun02:49 i  i   +* Re: Parsing timestamps?4dxf
11 Jun10:04 i  i   i+* Re: Parsing timestamps?2LIT
11 Jun11:49 i  i   ii`- Re: Parsing timestamps?1dxf
11 Jun10:58 i  i   i`- Re: Parsing timestamps?1LIT
11 Jun10:41 i  i   `- Re: Parsing timestamps?1Hans Bezemer
11 Jun10:25 i  `- Re: Parsing timestamps?1B. Pym
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