Просто скажите вашим кодировщикам прекратить играть в 3D-шутеры и делать свою работу ^^
Шутки в сторону:
<script type="text/javascript">
var a, d, i, f, m, o, r, t, y;
a = [
"2011-04-19 00:00:00 event1 title here",
"2011-04-22 00:00:00 event2 title here",
"2011-05-25 00:00:00 event3 title here",
"2011-04-13 00:00:00 event4 title here",
"2011-12-13 00:00:00 event5 title here"
];
r = [];
t = [];
for (i = 0; i < a.length; i++) {
y = a[i].substr(0, 4);
m = a[i].substr(5, 2);
d = a[i].substr(8, 2);
t[i] = Date.UTC(
parseInt(y),
parseInt(m - 1, 10),
parseInt(d, 10),
parseInt(a[i].substr(11, 2), 10),
parseInt(a[i].substr(14, 2), 10),
parseInt(a[i].substr(17, 2), 10)
) / 1000;
r[i] = [t[i], a[i], m + "-" + d + "-" + y + a[i].substr(19)];
}
r.sort(
function(a, b) {
return a[0] - b[0];
}
);
f = Date.UTC(2011, 4 - 1, 21, 0, 0, 0) / 1000;
for (i in r) {
if (r[i][0] >= f)
document.write(r[i][2] + "<br />");
}
</script>
Поскольку части даты ваших входных строк, похоже, следуют формату ISO8601 , другим решением будет прямая сортировка целых строк буквально (возможно, потому что хронологический порядок будет таким же, как алфавитный порядок в этом случае) , но это уже другая история, и я к ней не привык.