Хотя JS предоставляет различные методы атрибута для получения объектов даты времени, например: метод GetDate | Метод GetDay | Метод приключения | Метод Gethours ... и т. Д., Он не предоставляет такого метода, как Java для пользователей, чтобы форматировать указанный объект Time в соответствии с шаблоном (шаблоном), предоставленным самим, поэтому я инкапсулировал небольшой метод для всех, чтобы высмеивать -.-. Если у вас есть хорошие предложения, я хотел бы порекомендовать это щедро.
Используйте знаний:
Аргументы: этот объект представляет выполняемой функции, и параметры функции, которая ее вызывает. Это не может быть создано явно. Хотя он имеет атрибут длины и может принимать значения в синтаксисе «[]», как массив, это не массив. TypeOF объект: оператор, возвращает строку, которая представляет тип данных выражения. Шесть возможностей: «номер», «строка», «логический», «объект», «функция» и «не определен». Object.Constructor: представляет функцию, которая создает объект. Объект должен быть именем объекта или функции. Базовые данные не имеют этого атрибута. Метод EXEC: запустите поиск в строке, используя регулярную шаблон выражения и верните массив, содержащий результаты поиска. Матч не было найдено, затем он возвращает ноль. Тот же тип, соответствующие элементам в массиве, не появятся неоднократно. str.split (rex | str): разделить строку на подстроение в качестве обычного объекта или подстроения, а затем вернуть результат в качестве строкового массива. Выбросить ошибку ('msg'): бросает ошибку с информацией о сообщении. Заброс может сопровождаться любым выражением. Есть также некоторые использование для ... в трехмерных операторах и субстрате, которые относительно просты.
Код фрагмент:
Кода -копия выглядит следующим образом:
/**
**** JS Форматирование времени и даты *** <br>
* <p>
* Строка шаблона принимает строгий формат. Если он превышает формат, будет брошено исключение, и каждый формат может появиться только один раз. Например, формат yyyy-mm-yyyy выставит исключения
* </p>
* Y-Year Длина: 2/4 бита <br>
* Q-Quarterly Длина: 1 цифра <br>
* Монт Длина: 1 ~ 2 цифр <br>
* Длина D-DAI: 1 ~ 2 цифры <br>
* Длина H-времени: 1 ~ 2 Положение 24-часовая система, h: 12-часовая система <br>
* М-длина: 1 ~ 2 цифры <br>
* S-Second Длина: 1 ~ 2 бита <br>
* Длина S-MS: Исправлена 1 бит
* @param {date type object} date
* @param {string type template string} fmt
* @return форматированное время и строка даты
* @author lyt
*/
Функция DateFormat (Date, FMT) {
if (Arguments.length! = 2) // Проверьте количество параметров
ошибка бросает («длина аргументов незаконна»);
if (! date || (typeof date! = 'object') || (d.constructor! = date)) // Параметр Проверка законности
ошибка бросания (аргументы [0] + ': тип не тип даты');
if (/h+/.test(fmt) && /h+/.test(fmt))
Ошибка добавления («Формат часа неправильный, тот же тип может появиться только один раз подряд!»);
/* Проверка параметра шаблона, метод регулярной проверки*/
var verify = function (rex) {
var arr = new Regexp (rex) .exec (fmt); // Получить соответствующий массив результатов
if (! arr) // return, если совпадает
возвращаться "";
if (fmt.split (rex) .length> 2) // Интервал одного и того же типа происходит несколько раз
Ошибка добавления («Ошибка формата FMT: тот же тип может появиться только один раз в ряду!»);
вернуть arr [0];
};
/**
* Предоставьте универсальную подходящую замену на месяцы, дни, часы, минуты и секунды
* @param {object o attribute key} r
* @param {r соответствует обычным объектам} rex
**/
var common = function (r, rex) {
if (len! = 1 && len! = 2)
ошибка бросания («Ошибка формата месяца: M может появиться только в 1/2 раза»);
len == 2? fmt = fmt.replace (rex, o [r] .length == 1? "0"+o [r]: o [r]): fmt = fmt.replace (rex, o [r]);
}
var O = {// объект хранения данных
"y +": date.getfyear () + "", // Год
"q +": math.floor ((date.getmonth () + 3) / 3), // ежеквартально
"M +": date.getmonth () + 1 + "", // месяц
"D +": date.getDate () + "", // день
"H +": date.gethours () + "", // 24:00
"H +": date.gethours () + "", // 12 часов
"M +": date.getMinutes () + "", // очки
"S +": date.getSeconds () + "", // секунд
"S+": date.getMilliseconds () // миллисекунд
}
для (var r in o) {
Вар Рекс, Лен, темп;
rex = new Regexp (r);
temp = perify (rex); // Сопоставьте результирующую строку
len = temp.length; // Длина
if (! Len || len == 0)
продолжать;
if (r == "y+") {
if (len! = 2 && len! = 4)
ошибка бросания («Ошибка формата года: Y может появиться только 2/4 раза»);
len == 2? fmt = fmt.replace (rex, o [r] .substr (2,3)): fmt = fmt.replace (rex, o [r]);
} else if (r == "q+") {
if (len! = 1)
Ошибка бросания ("Quarterly Format Ошибка: Q может появиться только один раз");
fmt = fmt.replace (rex, o [r]);
} else if (r == "h+") {
if (len! = 1 && len! = 2)
ошибка бросания («Ошибка формата часа: H может происходить только в 1/2 раза»);
var h = (o [r]> 12? O [r] -12: o [r]) + "";
len == 2? fmt = fmt.replace (rex, h.length == 1? "0"+h: h): fmt = fmt.replace (rex, h);
} else if (r == "s+") {
if (len! = 1)
Ошибка бросания ("Milliseconds Format Ошибка: S может появиться только один раз");
fmt = fmt.replace (rex, o [r]);
} else {// (r == "m+" || r == "d+" || r == "h+" || r == "m+" || r == "s+")
общий (r, rex)
}
}
вернуть FMT;
}
Приведенные выше демонстрационные эффекты для вашей ссылки:
Кода -копия выглядит следующим образом: console.log (dateformat (new Date (), 'yyyyy QQ M Month DD Day HH HOM M Minute S Second S Millisecond'));
Кода -копия выглядит следующим образом: console.log (dateformat (new Date (), 'yyyyyyyyyyyyyqqqmmddddddhhhmm minots second s millisecond'));
Кода -копия выглядит следующим образом: console.log (dateformat (new Date (), 'yyyyy', q Quarter, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, q
Кода -копия выглядит следующим образом: console.log (dateformat («Я не объект времени», «Yyyyy Year Q квартал M Месяц DD DD HH HOM M Minute S Second S Millisecond '));
Копия кода выглядит следующим образом: console.log (dateformat (new Date (), 'yyyyy's QQ Mmm Month DDD Day HH Hour Minate Second S Millisecond'));
Я не буду перечислять другие эффекты один за другим. Если вы заинтересованы, вы можете скопировать код и проверить его напрямую. Пожалуйста, дайте ему щедрое напоминание, если есть какие -либо ошибки или области, которые необходимо оптимизировать.
Выше приведено введение в эту очень полезную функцию инкапсуляции. Разве это не очень практично? Друзья могут использовать его непосредственно в своих проектах.