Path: ...!weretis.net!feeder9.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail From: dxf Newsgroups: comp.lang.forth Subject: Re: Parsing timestamps? Date: Tue, 8 Oct 2024 19:55:34 +1100 Organization: i2pn2 (i2pn.org) Message-ID: <02c0761d5b634165a4f26eec23ab1cc17ff9945c@i2pn2.org> References: <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Injection-Date: Tue, 8 Oct 2024 08:55:35 -0000 (UTC) Injection-Info: i2pn2.org; logging-data="1081679"; mail-complaints-to="usenet@i2pn2.org"; posting-account="XPw7UV90Iy7EOhY4YuUXhpdoEf5Vz7K+BsxA/Cx8bVc"; User-Agent: Mozilla Thunderbird Content-Language: en-GB X-Spam-Checker-Version: SpamAssassin 4.0.0 In-Reply-To: Bytes: 2105 Lines: 31 On 8/10/2024 6:41 pm, albert@spenarnc.xs4all.nl wrote: > In article <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org>, > 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 > > This problem is ill posed. You don't specify what happens > with less that 3 fields, or the meaning of the fields. > Normally I make the tests to run before attempting to code. Running this again I get the same (my expected) results (SwiftForth, VFX, Gforth etc). Not sure how I concluded it was broken. I've lost track of the iterations done since. Today I'm liking sjacks' solution.