| Deutsch English Français Italiano |
|
<306ac44092ac6cd60b0d98b34d5b323b48996f58@i2pn2.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail
From: dxf <dxforth@gmail.com>
Newsgroups: comp.lang.forth
Subject: Re: Parsing timestamps?
Date: Sun, 6 Oct 2024 23:58:55 +1100
Organization: i2pn2 (i2pn.org)
Message-ID: <306ac44092ac6cd60b0d98b34d5b323b48996f58@i2pn2.org>
References: <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org>
<7e21117d37c506cccd8e79323c416fd1@www.novabbs.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 6 Oct 2024 12:58:56 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="821643"; mail-complaints-to="usenet@i2pn2.org";
posting-account="XPw7UV90Iy7EOhY4YuUXhpdoEf5Vz7K+BsxA/Cx8bVc";
User-Agent: Mozilla Thunderbird
X-Spam-Checker-Version: SpamAssassin 4.0.0
In-Reply-To: <7e21117d37c506cccd8e79323c416fd1@www.novabbs.com>
Content-Language: en-GB
Bytes: 2192
Lines: 44
On 6/10/2024 7:59 pm, 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.
Good idea!
: /T ( a u -- hour min sec )
3 0 do
0 0 2swap >number rot drop ( u ... a u)
dup if over c@ [char] : = 1 and /string then
loop 2drop
2 0 do dup 0= if rot rot then loop ;
: .T cr . ." sec " . ." min " . ." hr " ;
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