Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.forth    |    Forth programmers eat a lot of Bratwurst    |    117,927 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 116,889 of 117,927    |
|    Gerry Jackson to dxf    |
|    Re: Parsing timestamps?    |
|    18 Oct 24 15:46:27    |
      From: do-not-use@swldwa.uk              On 06/10/2024 08: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              Another solution              : /t ( ca u -- sec min hour )        3 \ a count, decremented every recurse        [: -rot dup 0>        if 0. 2swap >number 1 /string 2swap drop ( -- ct ca' u' n1 )        >r rot 1-        recurse r> swap exit        then 2drop        ;] execute        0 ?do 0 loop \ 0 hours and minutes if missing in source string              : .t cr . ." hr " . ." min " . ." sec " ;              cr       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       s" " /t .t       s" :" /t .t       s" :53" /t .t       s" 11/12/13" /t .t \ Different separator       s" 11::13" /t .t       s" :::" /t .t       s" 3:" /t .t       s" 1:2:" /t .t              \ Results       1 hr 2 min 3 sec       0 hr 2 min 3 sec       0 hr 0 min 3 sec       23 hr 59 min 59 sec       0 hr 0 min 3 sec       0 hr 0 min 0 sec       0 hr 0 min 0 sec       0 hr 0 min 53 sec       11 hr 12 min 13 sec       11 hr 0 min 13 sec       0 hr 0 min 0 sec       0 hr 0 min 3 sec       0 hr 1 min 2 sec              The last two could be regarded as wrong but you indicated elsewhere that       they wouldn't occur.              Any non-digit is a separator              --       Gerry              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca