Think it's possible, can i have a few more examples for each month just to be sure.
[edit] Give me a few mins I think i have an idea
Try this
[{"id":"c39a375a.75ef88","type":"inject","z":"b779de97.b1b46","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"08000871D00021","payloadType":"str","x":200,"y":60,"wires":[["655dab49.00c5dc"]]},{"id":"655dab49.00c5dc","type":"template","z":"b779de97.b1b46","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"22080670B00021\n08000871D00021\n46191541110021\n50421942310021\n16510643510021\n47282344710021\n00322041810021","output":"str","x":230,"y":120,"wires":[["7481eb62.24cbac"]]},{"id":"7481eb62.24cbac","type":"split","z":"b779de97.b1b46","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":370,"y":140,"wires":[["c0cbe344.c0da68"]]},{"id":"c0cbe344.c0da68","type":"function","z":"b779de97.b1b46","name":"","func":"let d = msg.payload.split(\"\");\nd[6] = String(d[6]-4);\nd[8] = (d[8] === \"D\" || d[8] === \"B\" || Number(d[8]) < 8? \"1\" : \"0\");\nd[10] = \"2\";\nd = d.join(\"\").match(/.{2}/g);\nmsg.payload = `${d[3]}-${d[4]}-${d[5] + d[6]} ${d[2]}:${d[1]}:${d[0]}`;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":410,"y":80,"wires":[["5b7b3dbe.2f2e4c"]]},{"id":"5b7b3dbe.2f2e4c","type":"debug","z":"b779de97.b1b46","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":630,"y":100,"wires":[]}]
edited to check if char 9 is less than 8.
I think more data is needed.