New date format: YYYY-MM-DD

Charles Hartman charles.hartman at conncoll.edu
Sat Oct 15 08:20:41 EDT 2005


Wow -- as in, "wow!"

Charles Hartman
On Oct 14, 2005, at 9:24 PM, Ken Ray wrote:

> On 10/14/05 5:53 PM, "Charles Hartman"  
> <charles.hartman at conncoll.edu> wrote:
>
>
>> Maybe a built-in date-conversion function, with different standards
>> as arguments controlling the output? It would be *great* to have a
>> smart function like that, that would take the whole range of formats
>> various users might type into a field. (Anybody got one?)
>>
>
> Here you go! The function below has more comments than any other  
> function
> I've written <grin>.
>
> Have fun!
>
>
> Ken Ray
> Sons of Thunder Software
> Web site: http://www.sonsothunder.com/
> Email: kray at sonsothunder.com
>
>
>
> WATCH FOR LINE WRAPS!
>
> ----------------------------------------------------------------------
> --| FUNCTION: stsFormattedDate
> --|
> --| Author:   Ken Ray
> --| Version:  2.0
> --| Created:  8/2/04
> --| Last Mod: 11/15/04
> --| Requires: --
> --|
> --| Formats an incoming date according to a variety of date  
> patterns and
> --| outputs the
> --| result.
> --|
> --| Parameters:
> --|     <pDate>: The date to be formatted. Must be a date or date/time
> --|           combination, or empty. If empty, uses the current  
> date and
> --|           default 2AM time if time is requested in the pattern.
> --|     <pFormat>: The pattern to use to format the incoming date. The
> --|           following patterns are available where "M" is used  
> for the
> --|           month, "D" for the day, "Y" for the year, "W" for the  
> weekday
> --|           name, "H" for hours, "P" for AM/PM, "N" for minutes,  
> "S" for
> --|           seconds, and "G" for GMT calculation, as follows:
> --|                M = month number, no leading zeroes (1-12)
> --|                MM = month number, with leading zeroes (01-12)
> --|                MMM = month name, abbreviated (Jan - Dec)
> --|                MMMM = month name, long (January - December)
> --|                D = day number, no leading zeroes (1-31)
> --|                DD = day number, with leading zeroes (01-31)
> --|                W = weekday name, single letter (S/M/T/W/t/F/s)
> --|                WW = weekday name, shortest (Su/M/Tu/W/Th/F/Sa)
> --|                WWW = weekday name, abbreviated (Sun/Mon/Tue/Wed/ 
> Thu/
> --|                   Fri/Sat)
> --|                WWWW = weekday name, long (Sunday/Monday/Tuesday/ 
> etc.)
> --|                YY = two-digit year (00-99)
> --|                YYYY = four digit year (1970-2004)
> --|                H = hours, no leading zeroes, 12 hour format (1-12)
> --|                HH = hours, leading zeroes, 12 hour format (01-12)
> --|                HHH = hours, no leading zeroes, 24 hour format  
> (1-23)
> --|                HHHH = hours, leading zeroes, 24 hour format  
> (01-23)
> --|                HHHHH = military time format (0000 - 2359)
> --|                P = AM/PM, single character, lower case (a/p)
> --|                PP = AM/PM, single character, upper case (A/P)
> --|                PPP = AM/PM, two characters, lower case (am/pm)
> --|                PPPP = AM/PM, two characters, upper case (AM/PM)
> --|                N = minutes, no leading zeroes (0-59)
> --|                NN = minutes, leading zeroes (00-59)
> --|                S = seconds, no leading zeroes (0-59)
> --|                SS = seconds, leading zeroes (00-59)
> --|                G = Calculation based on GMT (-1100 to +1100)
> --|     <pUseBrackets>: Determines whether or not the format needs  
> to have
> --|           brackets surrounding each part of the pattern. If  
> true, it
> --|           requires that all patterns are surrounded by square  
> brackets,
> --|           and allows the letters used in the pattern  
> (MDYWHNSGP) to be
> --|           used as part of the return string that is *not* part  
> of the
> --|           pattern (for example "GMT" as a string). If false,  
> pattern
> --|           letters are replaced by the corresponding date parts  
> in the
> --|           returned string (so it assumes that characters that  
> are not
> --|           part of the pattern are not letters, but symbols).
> --|
> --| Examples:
> --|    MM/DD/YYYY  -> 04/07/2004
> --|    WWW, MMM D YYYY  -> Mon, Aug 2 2004
> --|    WWW, MMM D YYYY G  --> Mon, Aug 2 2004 -0500
> --|    [WWW],[MMM] [D] [YYYY] [G] GMT  --> Mon, Aug 2 2004 -0500 GMT
> ----------------------------------------------------------------------
> function stsFormattedDate pDate,pFormat,pUseBrackets
>   if (pDate = "") or (pDate = "Now") then put the date && \
>     the long time into pDate
>   if (pFormat = "") then put "MM/DD/YYYY" into pFormat
>   if isNumber(word -1 of pDate) and (word -1 of pDate <=2359) then
>     -- date and military time sent in, just needs a colon between hour
>     -- and minute for it to be converted
>     put ":" before char -2 of pDate
>   end if
>   -- Check for am/pm without preceding space
>   put offset("am",pDate) into tLoc
>   if (tLoc <> 0) and (char (tLoc-1) of pDate <> " ") then put " "  
> before
> char tLoc of pDate
>   put offset("pm",pDate) into tLoc
>   if (tLoc <> 0) and (char (tLoc-1) of pDate <> " ") then put " "  
> before
> char tLoc of pDate
>
>   put ((pUseBrackets <> "") and (pUseBrackets <> "false")) into  
> pUseBrackets
>   put pDate into tOrigDate
>
>   convert pDate to dateItems
>   if (pDate is "invalid date") or (("69" is not in tOrigDate) and  
> (item 1 of
> pDate="1969")) then
>     return "invalid date"
>   end if
>   put item 1 of pDate into tYear
>   put item 2 of pDate into tMonthNum
>   put item 3 of pDate into tDayNum
>   put item 4 of pDate into tHour
>   put item 5 of pDate into tMinute
>   put item 6 of pDate into tSecond
>   put item 7 of pDate into tWeekdayNum
>   put word -1 of the internet date into G
>   set the numberFormat to "00"
>
>   if pUseBrackets then
>     put "[MMMM],[MMM],[MM],[M],[WWWW],[WWW],[WW],[W],[DD],[D], 
> [YYYY]," & \
>       "[YY],[HHHHH],[HHHH],[HHH],[HH],[H],[PPPP],[PPP],[PP],[P], 
> [NN]," & \
>       "[N],[SS],[S],[G]" into tFormatWords
>   else
>     put "MMMM,MMM,MM,M,WWWW,WWW,WW,W,DD,D,YYYY," & \
>       "YY,HHHHH,HHHH,HHH,HH,H,PPPP,PPP,PP,P,NN,N,SS,S,G" into  
> tFormatWords
>   end if
>   put "!@#$%^&*()_+{}|:'<>?~`-=[]" into tReplaceChars
>   repeat with x = 1 to the number of items of tFormatWords
>     replace (item x of tFormatWords) with "[[[" & char x of  
> tReplaceChars &
> "]]]]" in pFormat
>   end repeat
>
>   put tYear into YYYY
>   put char -2 to -1 of tYear into YY
>
>   put tMonthNum into M
>   put (tMonthNum+0) into MM
>   put line tMonthNum of the abbreviated monthNames into MMM
>   put line tMonthNum of the long monthNames into MMMM
>
>   put tDayNum into D
>   put (tDayNum+0) into DD
>
>   put char tWeekDayNum of "SMTWtFs" into W
>   put item tWeekDayNum of "S,M,Tu,W,Th,F,Sa" into WW
>   put line tWeekDayNum of the abbreviated weekdayNames into WWW
>   put line tWeekDayNum of the long weekdayNames into WWWW
>
>   put tHour into HHH
>   put (tHour+0) into HHHH
>   if tHour <=12 then
>     put tHour into H
>     put "a" into P
>     put "A" into PP
>     put "am" into PPP
>     put "AM" into PPPP
>   else
>     put tHour-12 into H
>     if H < 10 then
>       delete char 1 of H  -- remove leading 0
>     end if
>     put "p" into P
>     put "P" into PP
>     put "pm" into PPP
>     put "PM" into PPPP
>   end if
>   put (H+0) into HH
>
>   put tMinute into N
>   put (tMinute+0) into NN
>
>   put HHHH & NN into HHHHH
>
>   put tSecond into S
>   put (tSecond+0) into SS
>
>   repeat with x = 1 to the number of items of tFormatWords
>     if pUseBrackets then
>       local tTemp
>       get matchText(item x of tFormatWords,"\[(.*?)\]",tTemp)
>       do "put" && tTemp && "into tVal"
>     else
>       do "put" && (item x of tFormatWords) && "into tVal"
>     end if
>     replace "[[[" & char x of tReplaceChars & "]]]]"  with tVal in  
> pFormat
>   end repeat
>
>   return pFormat
> end stsFormattedDate
>
> _______________________________________________
> 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
>




More information about the use-livecode mailing list