Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #132401

Re: Parsing timestamps?

From dxf <dxforth@gmail.com>
Newsgroups comp.lang.forth
Subject Re: Parsing timestamps?
Date 2024-10-07 02:34 +1100
Organization i2pn2 (i2pn.org)
Message-ID <3f677402affc744ccafcb2cbcc5a664c26b98ba2@i2pn2.org> (permalink)
References <1f433fabcb4d053d16cbc098dedc6c370608ac01@i2pn2.org> <7e21117d37c506cccd8e79323c416fd1@www.novabbs.com> <306ac44092ac6cd60b0d98b34d5b323b48996f58@i2pn2.org>

Show all headers | View raw


On 6/10/2024 11:58 pm, dxf wrote:
> 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

Bug fix:

variable cnt

: @SEC ( a u -- ud )  \ HH:MM:SS or free-form
  0 cnt !  3 0 do
    0 0 2swap >number rot drop ( u ... a u)
    dup if  1 /string  1 cnt +!  then
  loop 2drop  cnt @ 1+ 0 do  rot  loop ( fixup)
; \  swap secs/min * +  swap secs/hour um*  rot 0 d+ ;

: .3 ( h m s -- )  cr rot . swap . . ;

s" 00:00:06" @sec .3
s" 00:06:00" @sec .3
s" 06:00:00" @sec .3
cr
s" 06"       @sec .3
s" 06:00"    @sec .3
s" 06:00:00" @sec .3

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


Thread

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