Напишите функцию outputDate(date), которая выводит дату в формате dd.mm.yy.
Ее первый аргумент должен содержать дату в одном из видов:
- Как объект
Date. - Как строку в формате
yyyy-mm-dd. - Как число секунд с
01.01.1970. - Как массив
[гггг, мм, дд], месяц начинается с нуля
Для этого вам понадобится определить тип данных аргумента и, при необходимости, преобразовать входные данные в нужный формат.
Пример работы:
function outputDate(date) { /* ваш код */
outputDate( '2011-10-02' ); // 02.10.11
outputDate( 1234567890 ); // 14.02.09
outputDate( [2000,0,1] ); // 01.01.00
outputDate( new Date(2000,0,1) ); // 01.01.00
Решение
Решение
Для определения примитивного типа строка/число подойдет оператор typeof.
Примеры его работы:
alert(typeof 123); // "number" alert(typeof "строка"); // "string" alert(typeof new Date()); // "object" alert(typeof []); // "object"
Оператор typeof не умеет различать разные типы объектов, они для него все на одно лицо: "object". Поэтому он не сможет отличить Date от Array.
Используем для того, чтобы их различать, свойство [[Class]].
Функция:
function outputDate(date) {
if (typeof date == 'number') {
// перевести секунды в миллисекунды и преобразовать к Date
date = new Date(date*1000);
} else if(typeof date == 'string') {
// разобрать строку и преобразовать к Date
date = date.split('-');
date = new Date(date[0], date[1]-1, date[2]);
} else if ( {}.toString.call(date) == '[object Array]' ) {
date = new Date(date[0], date[1], date[2]);
}
var day = date.getDate();
if (day < 10) day = '0' + day;
var month = date.getMonth()+1;
if (month < 10) month = '0' + month;
// взять 2 последние цифры года
var year = date.getFullYear() % 100;
if (year < 10) year = '0' + year;
var formattedDate = day + '.' + month + '.' + year;
alert(formattedDate);
}
outputDate( '2011-10-02' ); // 02.10.11
outputDate( 1234567890 ); // 14.02.09
outputDate( [2000,0,1] ); // 01.01.00
outputDate( new Date(2000,0,1) ); // 01.01.00
#359