Extract date from a string
Supported:
Y-M-D
M/D/Y
M.D.Y
Y/M/D (if Y > 31)
Y.M.D (if Y > 31)
M-D-Y (if Y > 31)
D/M-Y
HTML
<script>
var dates = [{ "name" : "PHISH Reba Comcast Center Hartford CT. 6/18/2010" },{ "name" : "Phish - Destiny Unbound 1991 Telluride" },{ "name" : "Phish 1991-11-30 Harry Hood" },{ "name" : "Phish - Harry Hood - November 30, 1991" },{ "name" : "Phish - It's Ice - November 30, 1991" },{ "name" : "PHISH - 11.30.91 BOUNCING AROUND THE ROOM" },{ "name" : "PHISH - 11.30.91 Harry Hood" },{ "name" : "PHISH - 11.30.91 It's ICE" },{ "name" : "Phish - My Sweet One/Horn - November 30, 1991" },{ "name" : "PHISH - 11.30.91 HORN" },{ "name" : "Phish - My Sweet One/Horn - November 30, 1991" },{ "name" : "PHISH - 11.30.91 I didn't know" },{ "name" : "Phish/Worcester,MA 12-31-91 \"Llama\" (photo montage)" },{ "name" : "Phish 1991-11-30 My Sweet One, Port Chester, NY" },{ "name" : "Cavern - Phish" },{ "name" : "Phish -- Suzy Greenberg 2/25/93" },{ "name" : "Phish - David Bowie 2/25/93" },{ "name" : "PHISH - 02 - Fast Enough For You" },{ "name" : "Phish 1993-2-25 If I Only Had a Brain w/ Mimi on Vac" },{ "name" : "Phish-Good Times Bad Times, 1993/2/25" },{ "name" : "Phish Foam Madison Square Garden 01/01/2011 [HD iPhone]" },{ "name" : "Phish: Foam [HD] 2011-01-01 - New York, NY" },{ "name" : "Phish | 01.01.11 | Foam" },{ "name" : "Phish: Tube / Runaway Jim [HD] 2011-01-01 - New York, NY" },{ "name" : "Phish \"Runaway Jim\" @ MSG on January 1, 2011" },{ "name" : "Phish | 01.01.11 | Runaway Jim" },{ "name" : "Phish My Soul Madison Square Garden 01/01/11 [HD]" },{ "name" : "Phish | 01.01.11 | My Soul" },{ "name" : "Phish: My Soul [HD] 2011-01-01 - New York, NY" },{ "name" : "Phish | 01.01.11 | Tube" },{ "name" : "Phish: Tube / Runaway Jim [HD] 2011-01-01 - New York, NY" },{ "name" : "Phish: Guelah Papyrus [HD] 2011-01-01 - New York, NY" },{ "name" : "Phish | 01.01.11 | Guelah Papyrus" },{ "name" : "Phish Reba Madison Square Garden 01/01/11 [HD]" },{ "name" : "Phish: Reba [HD] 2011-01-01 - New York, NY" },{ "name" : "Phish | 01.01.11 | Reba" },{ "name" : "Phish \"Reba, pt.1\"...
CSS
.pass {background:#0f0; color:#000;}
.fail {background:#f00; color:#000;}
JavaScript
function formatDate(date) {
function lz(value,w) {
value = value.toString();
return "0000".slice(4-w + value.length) + value;
}
return [
lz(date.getFullYear(),4),
lz(date.getMonth()+1,2),
lz(date.getDate(),2)
].join('-');
}
//RegExp with support for short (XdYdZ) and long (month_in_text day, year)
var reDate = new RegExp([
'(?:', // Short format
'\\b',
'(\\d{4}|\\d{1,2})', // field.short_value_1
'\\s*([./-])\\s*', // field.short_del_1
'(\\d{1,2})', // field.short_value_2
'\\s*([./-])\\s*', // field.short_del 2
'(\\d{4}|\\d{1,2})', // field.short_value_3
'\\b',
')|(?:', // Long format
'\\b',
'(', // field.long_month
'jan(?:uary)?|',
'feb(?:ruary)?|',
'mar(?:ch)?|',
'apr(?:il)?|',
'may|',
'jun(?:e)?|',
'jul(?:y)?|',
'aug(?:ust)?|',
'sep(?:tember)?|',
'oct(?:ober)?|',
'nov(?:ember)?|',
'dec(?:ember)?',
')',
'\\s+', // required space
'(\\d{1,2})\\b', // field.long_date
'\\s*', // optional space
',?', // optional delimiter
'\\s*', // optinal space
'(\\d{4}|\\d{2})\\b', // field.long_year
')'
].join(''),'i');
//Month names, must be 3 chars lower case.
//Used to convert month name to number.
var monthNames = [
'jan', 'feb', 'mar', 'apr', 'may', 'jun',
'jul','aug', 'sep', 'oct', 'nov', 'dev'
];
var extractDateFromString = function(str) {
var m = str.match(reDate);
var date;
if (m) {
var idx=-1;
//Convert array form regexp result to named variables.
//Makes it so much easier to change the regexp wihout
//changing the rest of the code.
var field = {
all : m[++idx],
short_value_1 : m[++idx],
short_del_1 : m[++idx],
short_value_2 : m[++idx],
short_del_2 : m[++idx],
short_value_3 : m[++idx],
long_month :...