Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.lang.forth > #134108

Re: Parsing timestamps?

Date 2025-07-30 03:35 +1000
Subject Re: Parsing timestamps?
Newsgroups comp.lang.forth
References <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org> <7e21117d37c506cccd8e79323c416fd1@www.novabbs.com> <1021bsd$31o0d$1@dont-email.me> <106ao37$2n711$1@dont-email.me>
From dxf <dxforth@gmail.com>
Message-ID <6889064d$1@news.ausics.net> (permalink)
Organization Ausics - https://newsgroups.ausics.net

Show all headers | View raw


On 30/07/2025 1:07 am, B. Pym wrote:
> ... 
> : get-number ( accum adr len -- accum' adr' len' )
>   { adr len }
>   0. adr len >number { adr' len' }
>   len len' =
>   if
>     2drop  adr len 1 /string
>   else
>     d>s swap 60 * +
>     adr' len'
>   then ;
> 
> : parse-time  ( adr len -- seconds)
>   0 -rot
>   begin
>     dup
>   while
>     get-number
>   repeat
>   2drop ;
> 
> s" foo-bar" parse-time . 0
> s" foo55bar" parse-time . 55
> s" foo 1 bar 55 zoo" parse-time . 155
> s" and9foo 1 bar 55 zoo" parse-time . 32515

: digit? ( c -- f )  48 58 within ;

: scan-digit ( a u -- a' u' )
  begin dup while
    over c@ digit? 0= while  1 /string
  repeat then ;

: /number ( a u -- a' u' u2 )
  0. 2swap >number 2swap drop ;

: parse-time ( adr len -- seconds)
  0  begin  >r  scan-digit  dup while
    /number  r> 60 * +
  repeat 2drop  r> ;

s" foo-bar" parse-time . 0  ok
s" foo55bar" parse-time . 55  ok
s" foo 1 bar 55 zoo" parse-time . 115  ok
s" and9foo 1 bar 55 zoo" parse-time . 32515  ok

Back to comp.lang.forth | Previous | NextPrevious in thread | Find similar


Thread

Re: Parsing timestamps? "B. Pym" <Nobody447095@here-nor-there.org> - 2025-07-29 15:07 +0000
  Re: Parsing timestamps? "B. Pym" <Nobody447095@here-nor-there.org> - 2025-07-29 15:22 +0000
  Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2025-07-30 03:35 +1000

csiph-web