On Sun, 29 Jul 2007 10:46:59 -0400, william humphrey wrote: > I notice that the dates can be formated like yyyy-m-d but I don't see how to > format them yyyy-mm-dd or for example you can get 2007-1-5 but can't get > 2007-01-05 because you have a choice of %m for the number of the month but > not to tell it %mm or something to make sure the zero is there. > Please tell me what I am not seeing? I am experimenting with getting the > useSystemDate function correctly but have old values that need to be > converted (that are missing the leading zeros).
I have a date formatting function you can use, which is quite comprehensive (see below), so you can do this: put "4/15/07" into tDate put stsFormattedDate(tDate,"YYYY-MM-DD") --> 2007-04-05 Enjoy! And don't forget to watch line wraps! Ken Ray Sons of Thunder Software, Inc. Email: [EMAIL PROTECTED] Web Site: http://www.sonsothunder.com/ ---------------------------------------------------------------------- --| FUNCTION: stsFormattedDate --| --| Author: Ken Ray --| Version: 2.5 --| Created: 8/2/04 --| Last Mod: 4/26/07 --| 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. Will also check to see if the date is a mySQL-formatted --| date if it can't be identified as a "normal" date. --| <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). ---------------------------------------------------------------------- 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) then if (word -1 of pDate <=2359) and (length(word -1 of pDate)=4) 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 else -- simple number, coerce to AM if word -1 of pDate <= 12 then put ((word -1 of pDate) & ":00 AM") into word -1 of pDate else -- a number larger than 12 but not military? Can't do anything with that return "invalid time" end if end if end if -- Check for am/pm without preceding space put offset("a",pDate) into tLoc if (tLoc <> 0) and (char (tLoc-1) of pDate <> " ") then if char (tLoc+1) of pDate <> "m" then put "m" after char tLoc of pDate put " " before char tLoc of pDate put word -2 of pDate into tTime if ":"is not in tTime then -- probably something like "2am" put (tTime & ":00") into word -2 of pDate end if end if put offset("p",pDate) into tLoc if (tLoc <> 0) and (char (tLoc-1) of pDate <> " ") then if char (tLoc+1) of pDate <> "m" then put "m" after char tLoc of pDate put " " before char tLoc of pDate put word -2 of pDate into tTime if ":"is not in tTime then -- probably something like "2pm" put (tTime & ":00") into word -2 of pDate end if end if put ((pUseBrackets <> "") and (pUseBrackets <> "false")) into pUseBrackets put pDate into tOrigDate -- Check to see if it's mySQL-formatted if matchText(word 1 of pDate,"(?s)(.*)-(.*)-(.*)",tY,tM,tD) and length(tY)=4 then if word 2 of pDate <> "" then put tM & "/" & tD & "/" & tY && (word 2 of pDate) into pDate else put tM & "/" & tD & "/" & tY into pDate end if 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 else 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 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 "[EMAIL PROTECTED]&*()_+{}|:'<>?~`-=[]" 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 if tHour = 0 then put 12 into H else 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 = 0 then put 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 [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
