53 lines
1.7 KiB
Plaintext
53 lines
1.7 KiB
Plaintext
|
# -*- 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)
|
||
|
}
|