Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vdtptd$151ad$1@dont-email.me>
Deutsch   English   Français   Italiano  
<vdtptd$151ad$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Ruvim <ruvim.pinka@gmail.com>
Newsgroups: comp.lang.forth
Subject: Re: Parsing timestamps?
Date: Sun, 6 Oct 2024 14:48:14 +0400
Organization: A noiseless patient Spider
Lines: 43
Message-ID: <vdtptd$151ad$1@dont-email.me>
References: <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 06 Oct 2024 12:48:14 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="e46068a955d916fa6a0f28fb20080d2c";
	logging-data="1213773"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+BKLnvsZtpHojzsyIOxyOD"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:nzy12Qgm9EbBYZbzmu0d+iSjdtY=
Content-Language: en-US
In-Reply-To: <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org>

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
   ;



--
Ruvim