1. Формат dd.mm.yyyy заменяете на (%d%d)%p(%d%d)%p(%d%d%d%d) 2. применяете к строке даты функцию string.match по маске выше. Получаете 3 строки. 3. складываете эти 3 полученные строчки как вам нужно
Со 2-м и 3-м пунктом понятно. По 1-му пункту нужно именно задавать в "человеческом" формате: "dd.mm.yyyy", "yyyy-mm-dd", "dd/mm/yy", "yyyymmdd" и т.д. Можно как в Эксель: "D.M.YY", "YY-M-D", "D/M/Y", "YYMD"
Надо делать так, как надо. А как не надо - делать не надо.
function DateFormat(date, input_fmt, output_fmt) local day = date:sub(input_fmt:find("([d|D]+)") local month = date:sub(input_fmt:find("([m|M]+)") local year = date:sub(input_fmt:find("([Y|y]+)") local outstr = output_fmt:gsub("([d|D]+)", day) local outstr = outstr:gsub("([m|M]+)", month) local outstr = outstr:gsub("([y|Y]+)", year) return outstr end
Николай Камынин пишет: Если без особых выкрутасов, то можно упростить:
function DateFormat(date, input_fmt, output_fmt) local day = date:sub(input_fmt:find("([d|D]+)" ;) local month = date:sub(input_fmt:find("([m|M]+)" ;) local year = date:sub(input_fmt:find("([Y|y]+)" ;) local outstr = output_fmt:gsub("([d|D]+)", day) local outstr = outstr:gsub("([m|M]+)", month) local outstr = outstr:gsub("([y|Y]+)", year) return outstr end
примерно в 2 раза быстрее.
Добрый день. Только работает не так как в моем примере.
Добрый день, ну да, "без выкрутасов": ------------------------------- есть общепринятые форматы дат. А это: 2015 0002 01, 2015 0002 01 не дата и не число. а последовательность цифр и пробелов.
Добрый день! А как без ифов и прочего отформатировать число 1 в 01? Как задать формат отображения с кол-вом разрядов, что-ли.. например хочу 1 в трех разрядах, получаю - 001 в двух - 01 если число 12 то оно 12 и на выходе. Как то просто должно делаться.. Помогите, пожалуйста.
Viktor MMM пишет: Добрый день! А как без ифов и прочего отформатировать число 1 в 01? Как задать формат отображения с кол-вом разрядов, что-ли.. например хочу 1 в трех разрядах, получаю - 001 в двух - 01 если число 12 то оно 12 и на выходе. Как то просто должно делаться.. Помогите, пожалуйста.