in reply to Optimise the script

It looks to me like you want to filter on the date (not the time) of the fourth column. Why not forgo converting this date before trying to match it, and directly test the contents of that field for a matching date? I assume that they're all the exact same format.

update Well, since you are converting between time zones, the date might niot be an exact match. But it won't differ by more than one day. So you could prefilter the results, for example for the 26th you could match /^\^[(26|25|27)\b/, and do a second filtering in your old way, in a second step.