Довольно часто сталкиваешься с тем, что на одном языке есть прекрасная функция, которая в одну строку решает нужную задачу, а на другом языке такой функции нет и приходится писать аналог под конкретную задачу. Бывает очень нужно на JavaScript вывести дату или время в определенном формате как выводит функция на PHP strftime()
но на JS ее нет.
Можно поискать готовые библиотеки, а проще написать собственную функцию, которая и работать будет быстрее любой универсальной (автор функции Шовчко Дмитрий).
Аналог strftime на JavaScript
function format_date() {
var d = new Date();
var dd = d.getDate();
dd = ( dd < 10 ) ? '0' + dd : dd;
var m = d.getMonth() + 1;
mm = ( mm < 10 ) ? '0' + mm : mm;
var yyyy = d.getFullYear();
var ret = dd + '-' + mm + '-' + yyyy;
return ret;
}
function format_time() {
var d = new Date();
var hh = d.getHours();
hh = ( hh < 10 ) ? '0' + hh : hh;
var mm = d.getMinutes();
mm = ( mm < 10 ) ? '0' + mm : mm;
var ss = d.getSeconds();
ss = ( ss < 10 ) ? '0' + ss : ss;
var ret = hh + ':' + mm + ':' + ss;
return ret;
}
Две функции: format_date()
– выводит дату, а format_time()
– выводит время.
Вряд ли одновременно может понадобиться вывод дат и времени в разных форматах. Поэтому варианта с одной-двумя функциями более чем достаточно.
Если же нужна более универсальная функция, то можно использовать что-то вроде этого:
function formatDate(format_date, format_string)
{
var yyyy = format_date.getFullYear();
var yy = yyyy.toString().substring(2);
var m = format_date.getMonth() + 1;
var mm = m < 10 ? '0' + m : m;
var d = format_date.getDate();
var dd = d < 10 ? '0' + d : d;
var H = format_date.getHours();
var HH = H < 10 ? '0' + H : H;
var M = format_date.getMinutes();
var MM = M < 10 ? '0' + M : M;
var S = format_date.getSeconds();
var SS = S < 10 ? '0' + S : S;
format_string = format_string.replace(/yyyy/i, yyyy);
format_string = format_string.replace(/yy/i, yy);
format_string = format_string.replace(/mm/i, mm);
format_string = format_string.replace(/m/i, m);
format_string = format_string.replace(/dd/i, dd);
format_string = format_string.replace(/d/i, d);
format_string = format_string.replace(/HH/i, HH);
format_string = format_string.replace(/H/i, H);
format_string = format_string.replace(/MM/i, MM);
format_string = format_string.replace(/M/i, M);
format_string = format_string.replace(/SS/i, SS);
format_string = format_string.replace(/S/i, S);
return format_string;
}
Date.prototype.format = function(format)
{
return formatDate(this, format);
}
Использовать таким образом:
var d = new Date();
alert(d.format('mm.dd.yyyy'));
alert(d.format('d-m.yy'));
alert(d.format('HH:MM:SS'));
alert(d.format('H:M:S'));