Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #132404
| From | Ruvim <ruvim.pinka@gmail.com> |
|---|---|
| Newsgroups | comp.lang.forth |
| Subject | Re: Parsing timestamps? |
| Date | 2024-10-06 20:15 +0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <vdud3e$151ad$6@dont-email.me> (permalink) |
| References | <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org> <vdtptd$151ad$1@dont-email.me> <923a7df6941efa78ef7d0629d183cd736f9eb2f5@i2pn2.org> <vdu2vc$151ad$3@dont-email.me> |
On 2024-10-06 17:22, Ruvim wrote:
> On 2024-10-06 15:59, dxf wrote:
>> On 6/10/2024 9:48 pm, Ruvim wrote:
>>> 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
>>> ;
>>
>> It fails with s" 03". The test case may be unreasonable so I tried
>> s" :03" however it also fails. The complication is most tools scan
>> from the beginning whereas we would like to scan from the end.
>
>
> You did not provide output for test cases.
>
> I expect that "03" is equivalent to "03:00:00", which means 3 hours, 0
> minutes, 0 seconds.
> And ":03" is equivalent to "00:03:00", which means 0 hours, 3 minutes, 0
> seconds.
>
> My above implementation for `/t` produces:
>
> s" 1:2:3" /t .t \ "1 hr 2 min 3 sec"
> s" 02:03" /t .t \ "2 hr 3 min 0 sec"
> s" 03" /t .t \ "3 hr 0 min 0 sec"
> s" :03" /t .t \ "0 hr 3 min 0 sec"
>
>
> What is wrong?
Well, I see what you meant.
: /t ( sd.time -- sd.hour sd.min sd.sec )
s" :" split-string dup 0= if 2swap 0. 2swap exit then
s" :" split-string dup 0= if 2rot 2rot then
;
s" 02:03" /t .t \ "0 hr 2 min 3 sec"
s" 03" /t .t \ "0 hr 0 min 3 sec"
s" :03" /t .t \ "0 hr 0 min 3 sec"
Probably, a better interface would be:
: parse-time ( sd.time -- u.sec u.min u.hour )
s" :" split-string-last parse-uint -rot
s" :" split-string-last parse-uint -rot
parse-uint
;
--
Ruvim
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar
Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-06 18:51 +1100
Re: Parsing timestamps? mhx@iae.nl (mhx) - 2024-10-06 08:59 +0000
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-06 23:58 +1100
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 02:34 +1100
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 23:53 +1100
Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 14:48 +0400
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-06 22:59 +1100
Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 17:22 +0400
Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 17:34 +0400
Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 20:15 +0400
Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-06 13:08 +0000
Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-06 13:33 +0000
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 13:10 +1100
Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-07 03:29 +0000
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 14:58 +1100
Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-07 05:23 +0000
Re: Parsing timestamps? Anthony Howe <achowe@snert.com> - 2024-10-06 11:35 -0400
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 12:54 +1100
Re: Parsing timestamps? albert@spenarnc.xs4all.nl - 2024-10-07 13:00 +0200
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 22:30 +1100
Re: Parsing timestamps? sjack@dontemail.me (sjack) - 2024-10-07 16:20 +0000
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-08 14:07 +1100
Re: Parsing timestamps? melahi_ahmed@yahoo.fr (Ahmed) - 2024-10-08 06:08 +0000
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-08 18:33 +1100
Re: Parsing timestamps? sjack@dontemail.me (sjack) - 2024-10-08 15:19 +0000
Re: Parsing timestamps? sjack@dontemail.me (sjack) - 2024-10-08 20:30 +0000
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-09 12:06 +1100
Re: Parsing timestamps? albert@spenarnc.xs4all.nl - 2024-10-08 09:41 +0200
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-08 19:55 +1100
Re: Parsing timestamps? melahi_ahmed@yahoo.fr (Ahmed) - 2024-10-08 18:12 +0000
Re: Parsing timestamps? amalawi@gmail.com (alaa) - 2024-10-09 15:27 +0000
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-10 12:17 +1100
Re: Parsing timestamps? amalawi@gmail.com (alaa) - 2024-10-10 16:30 +0000
Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-16 18:29 +0200
Re: Parsing timestamps? Gerry Jackson <do-not-use@swldwa.uk> - 2024-10-18 15:46 +0100
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-19 12:29 +1100
Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-28 18:07 +0100
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-29 20:25 +1100
Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-29 14:45 +0100
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-30 11:31 +1100
Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-30 09:37 +0100
Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-31 11:41 +1100
csiph-web