date_Construct8601 (was numberformat)

Andre Garzia andre at andregarzia.com
Tue Aug 26 20:47:53 EDT 2008


Sarah and David,

thank you very much, I was in need of that! :-D

damn wordpress likes iso8601....

Cheers
andre

On Tue, Aug 26, 2008 at 9:16 PM, Sarah Reichelt
<sarah.reichelt at gmail.com> wrote:
> Hi David,
>
> Here is my re-working of your function:
>
> function date_Construct8601 someDate, someTime, extended, isUTC
>    if someTime is empty then
>        -- returning date only
>        convert someDate to dateItems
>        put item 1 of someDate into y
>        put item 2 of someDate into mons
>        put item 3 of someDate into d
>
>        convert someDate to internet date
>        if extended is true then
>            -- 1981-04-05
>            put "%4d-%02d-%02d" into baseString
>        else
>            -- 19810405
>            put "%4d%02d%02d" into baseString
>        end if
>
>        put format(baseString, y, mons, d) into fDate
>        return fDate
>
>    else
>        -- returning date & time as either local or UTC
>        convert (someDate && someTime) to internet date
>        put it into someDate
>
>        put word -1 of someDate into utcOffset
>
>        convert someDate to dateItems
>        put item 1 of someDate into y
>        put item 2 of someDate into mons
>        put item 3 of someDate into d
>
>        put item 4 of someDate into h
>        put item 5 of someDate into mins
>        put item 6 of someDate into s
>
>        if isUTC is true then
>            -- UTC specific code
>            put char 2 to 3 of utcOffset into extraHours
>            put char 4 to 5 of utcOffset into extraMin
>
>            if char 1 of utcOffset is "-" then
>                add extraHours to h
>                add extraMin to m
>            else
>                subtract extraHours from h
>                subtract extraMin from m
>            end if
>
>            if extended is true then
>                -- 1981-04-05T14:30:30-05:00
>                put "%4d-%02d-%02dT%02d:%02d:%02dZ" into baseString
>            else
>                -- 19810405T14:30:30-05 00
>                put "%4d%02d%02dT%02d:%02d:%02dZ" into baseString
>            end if
>            put format(baseString, y, mons, d, h, mins, s) into fDate
>            return fDate
>
>        else
>            -- Local specific code
>            if extended is true then
>                -- 1981-04-05T14:30:30-05:00
>                put "%4d-%02d-%02dT%02d:%02d:%02d %04s" into baseString
>            else
>                -- 19810405T14:30:30-05 00
>                put "%4d%02d%02dT%02d:%02d:%02d%04s" into baseString
>            end if
>
>            put format(baseString, y, mons, d, h, mins, s, utcOffset) into fDate
>            return fDate
>        end if
>    end if
> end date_Construct8601
>
>
> - instead of using your padding function and numberFormat, I just used
> format to supply the leading zeroes as required.
> - your UTC calculation was going the wrong way. I am in +1000 time
> zone, and to get to UTC, I have to subtract 10 from the local hours,
> not add.
> - there was some code duplication between the UTC and local date/time
> sections, so I re-organised the structure of the if-else-end if"s to
> avoid this.
>
> Thanks for providing an interesting challenge :-)
>
> Cheers,
> Sarah
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>



-- 
http://www.andregarzia.com All We Do Is Code.



More information about the use-livecode mailing list