No..... US format mm/dd/yyyy
Taco Fleur Tell me and I will forget Show me and I will remember Teach me and I will learn > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf > Of Steve Onnis > Sent: Saturday, 14 August 2004 7:11 PM > To: CFAussie Mailing List > Subject: [cfaussie] Re: [OT] regex > > > Ok > > Regardless of the initial format, the month is always going > to be in the middle isn't it? > > So this is that I do > > <cfscript> > function formatDate(dateStr,delim,outFormat) > { > tmpDate = > listSetAt(dateStr,2,monthAsString(listGetAt(dateStr,2,delim)),delim); > return dateFormat(tmpDate,outFormat); > } > </cfscript> > > Much easier don't you think? > > Steve > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf > Of Taco Fleur > Sent: Saturday, August 14, 2004 6:15 PM > To: CFAussie Mailing List > Subject: [cfaussie] Re: [OT] regex > > Kinda, but not close enough.. > First of you are trying to answer more than I am asking for.. > Second, dateformat, expects the date to be in US date format, > the function I am working on does not look at the locale or > expects a specific format, you feed it the format it is in > and you feed it the format you want it in. Second, there > might be some flaws in it, and there might not be, I am not > even near to being done with it, I simply enquired about look > ahead, i.e. matching something and not consuming it ;-)) > > - it's not done yet > - it's not called isDate() > - it's reFind witch will give me three sub expressions > containing the data I am after The syntax I have is way more > simpler than what you suggested.. But lets get back on topic, > on Monday I will see if (?:/|-) will do what I am after... > > Taco Fleur > > Tell me and I will forget > Show me and I will remember > Teach me and I will learn > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf > > Of Adam Cameron > > Sent: Saturday, 14 August 2004 9:44 AM > > To: CFAussie Mailing List > > Subject: [cfaussie] Re: [OT] regex > > > > > > > What I'm doing is creating a function that reformats a > > date, i.e. from > > > mm/dd/yyyy to dd/mm/yyyy etc.. > > > > Kinda like dateFormat(date, "dd/mm/yyyy")? Why reinvent the wheel? > > > > But, going back to the way you're going about it... > > > > Your regexp has a few flaws: > > - It'll match three digit years. > > - It'll match data like 13/32/2004: fits the dd/dd/dddd > > pattern, but still ain't a date. > > - if you use REreplace(), which seems to be what you're > > intending, it might not match ANYTHING if the string is > > malformed, so just return the same malformed string, without > > you knowing. > > > > So you need to use REFind() to do it, check to see whether > > you matched everything you need, in the format you want, and > > if so; rebuild the string. > > > > Something like this: > > > > <cfscript> > > date1 = "2/1/2004"; // and remember that's being > > treated as mm/dd/yyyy by > > this code... > > date2 = ""; > > > > match = REFind("^(?x) ## match must be @ beginning of > > string, and (?x) > > allows me to add comments and make it a multiline regexp > > (\d{1,2}) ## 1-2 chars > > which will be the month part > > (/|-) ## whichever > > slash we're using, and recall it for later. If you > > use ?: here, it doesn't capture it for use two steps further down > > (\d{1,2}) ## 1-2 chars > > which will be the day part > > \2 ## > > whichever slash we had earlier > > ((\d{2}){0,1}) ## a group of exactly > > two characters; but either zero or > > one occurences of that; so the (optional) first two > positions of YYyy > > (\d{2}) ## two digits > > (so in total it's possibly exactly two digits > > from above, and definitely another two digits here); so the > > minimum requirement for year: YY > > $ ## > > anchored to the end of the string > > ",date1, 1, true); > > > > if (arrayLen(match.pos) eq 7){ > > dayPart = mid(date1, match.pos[4], > > match.len[4]); > > monthPart = mid(date1, match.pos[2], > > match.len[2]); > > yearPart = ""; > > if (match.pos[5]){ > > yearPart = mid(date1, match.pos[5], > > match.len[5]); > > } > > yearPart = yearPart & mid(date1, match.pos[7], > > match.len[7]); > > separator = mid(date1, match.pos[3], > > match.len[3]); // or you could just > > hard-code "/" here if you liked > > > > date2 = numberFormat(dayPart, "00") & separator > > & numberFormat(monthPart, > > "00") & separator & yearPart; > > // but it still might not be a date > > }else{ > > writeOutput("That ain't a date"); > > } > > </cfscript> > > <cfdump var="#match#"> > > <cfdump var="#date2#"> > > > > So it's a lot of hassle and doesn't work very well. Just use > > dateFormat(). > > > > Adam > > > > --- > > You are currently subscribed to cfaussie as: > > [EMAIL PROTECTED] To unsubscribe send a blank email to > > [EMAIL PROTECTED] > > Aussie Macromedia Developers: http://lists.daemon.com.au/ > > > > > --- > You are currently subscribed to cfaussie as: [EMAIL PROTECTED] > To unsubscribe send a blank email to > [EMAIL PROTECTED] > Aussie Macromedia Developers: http://lists.daemon.com.au/ > > > --- > You are currently subscribed to cfaussie as: [EMAIL PROTECTED] > To unsubscribe send a blank email to > [EMAIL PROTECTED] > Aussie Macromedia Developers: http://lists.daemon.com.au/ > --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] Aussie Macromedia Developers: http://lists.daemon.com.au/
