# -*- coding: utf-8 mode: awk -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 function date__parse_fr(date, parts, y, m, d) { if (match(date, /([0-9][0-9]?)\/([0-9][0-9]?)\/([0-9][0-9][0-9][0-9])/, parts)) { y = int(parts[3]) m = int(parts[2]) d = int(parts[1]) return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) } else if (match(date, /([0-9][0-9]?)\/([0-9][0-9]?)\/([0-9][0-9])/, parts)) { basey = int(strftime("%Y")); basey = basey - basey % 100 y = basey + int(parts[3]) m = int(parts[2]) d = int(parts[1]) return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) } return -1 } function date__parse_mysql(date, parts, y, m, d) { if (match(date, /([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])/, parts)) { y = int(parts[1]) m = int(parts[2]) d = int(parts[3]) return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) } return -1 } function date__parse_any(date, serial) { serial = date__parse_fr(date) if (serial == -1) serial = date__parse_mysql(date) return serial } function date_serial(date) { return date__parse_any(date) } function date_parse(date, serial) { serial = date__parse_any(date) if (serial == -1) return date return strftime("%d/%m/%Y", serial) } function date_monday(date, serial, dow) { serial = date__parse_any(date) if (serial == -1) return date dow = strftime("%u", serial) serial -= (dow - 1) * 86400 return strftime("%d/%m/%Y", serial) } function date_add(date, nbdays, serial) { serial = date__parse_any(date) if (serial == -1) return date serial += nbdays * 86400 return strftime("%d/%m/%Y", serial) }