Hi Bob,

You can extract hours, minutes and seconds from a time value...

>> a-time: 17:40
== 17:40
>> a-time/hour
== 17
>> a-time/minute
== 40

which can make things simplier.  So...

am-pm: func [time] [
    ap: to-string time
    hour: time/hour
    either hour < 12 [ap: join ap "AM"][ap: join ap "PM"]
    if hour > 12 [replace ap to-string hour to-string (hour - 12)]
    if hour = 0 [replace ap to-string hour to-string 12]
    return ap
]

This seems to work, though I'm sure others can improve on it.

On 19-Jan-01, Bob Racko wrote:

> how do I format dates to am/pm format
> like: "hh:mm pm EST"

> is there a more succinct way to write this?

> time-ampm: func [ dt ]
> [ rejoin [

>                       ; handle  hh:mm part
> ( replace ( copy/part (
>  rejoin [
>         (either dt/time < 10:00 [ "0" ] [ "" ]) ; hh:mm vs [h]h:mm
>          either dt/time > 12:59:59
>          [ mold dt/time - 12:00 ]
>          [ mold dt/time ]
>         ]
> ) 5 ) "00:" "12:" )   ; midnite-1am is special


>                       ; handle " pm EST" parts
> either  dt/time > 11:59:59
>  [ " pm" ]
>  [ " am" ]

> " EST"
> ]]

> yes this does the job, perhaps a mold could be factored out
> and some parens are not needed.  now the challenge
> is to write something that handles the exceptions
> with less code. this version allows coding by deletion
> since the two parts hh:mm vs am/pm indicator
> are treated separately and simply concatenated.

-- 
Carl Read
[EMAIL PROTECTED]

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to