Я думаю, что все флешеры рано или поздно сталкивались с необходимостью форматирования даты-времени. Конечно, ничего сверхсложного в таком форматировании нет. Но всё же пользовательский класс DateFormat способен сильно упростить решение этой задачи для языка ActionScript 3.0.
Как явствует из самого названия, класс DateFormat осуществляет форматирование даты/времени. Но как он это делает? А делает он это точно также, как функция date в языке PHP. Подробно я на этом останавливаться не буду, так как имеется официальная документация по данной функции на русском языке, с которой вы можете ознакомиться на php.net (просто кликните по данной ссылке и откроется соответствующая страница с подробным описанием функции date).
Небольшой пример. Например, мы хотим с помощью функции date языка PHP получить текущую дату и время в следующем формате:
День:Месяц:Год Часы:Минуты:Секунды
Для этого нам понадобиться написать буквально одну строчку php-кода.
Код PHP:
<?php
echo date("d:m:Y h:i:s");
?>
Данный скрипт вернёт мне дату и время в следующем формате:
14:12:2011 11:28:41
Естественно, что у вас значения даты и времени будут другими. Но тут важен факт их форматирования, а не сами значения. В принципе, вы можете проверить работу данного скрипта - нажмите здесь.
С помощью класса DateFormat подобное форматирование становится доступным и в ActionScript 3.0.
Код ActionScript 3.0:
/*
получаем текущее время и дату
*/
var date:Date = new Date();
/*
форматируем время и дату
приводим их к формату:
День:Месяц:Год Часы:Минуты:Секунды
*/
trace(DateFormat.formatDate("d:m:Y h:i:s", date));
Согласитесь, так проще и быстрее:-)
Приведём ещё один пример. Например, мы хотим вывести текущую дату в формате:
День Название_месяца Год
Код ActionScript 3.0:
/*
получаем текущее время и дату
*/
var date:Date = new Date();
/*
форматируем дату
*/
trace(DateFormat.formatDate("d F Y", date));
Код вернёт следующую строку:
14 December 2011
Как видите, тоже сработало. Что мне тут не нравится? А не нравятся мне тут варварские названия месяцев (и дней недели, кстати, тоже). Но и это не проблема. Дело в том, что класс DateFormat хранит названия дней недели и месяцев в виде массивов. И никто не мешает нам эти массивы заменить на свои, в которых названия дней недели и месяцев на русском языке. Для этого открываем класс DateFormat в вашем любимом редакторе и делаем следующее:
Код ActionScript 3.0:
/*
закомментируем массивы, которые хранят названия дней недели и месяцев
*/
//public static var MONTHS:Array = ["January","February","March","April","May","June","July","August","September","October","November","December"];
//public static var DAYS:Array = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
/*
переведём значения массивов на русский язык
*/
public static var MONTHS:Array = ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"];
public static var DAYS:Array = ["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"];
Теперь класс DateFormat будет возвращать русские названия дней недели и месяцев. Есть и другой способ перевести названия дней недели и месяцев с варварского на русский. Этот способ не требует внесения изменений в сам класс DateFormat и, кстати, является более правильным, чем предыдущий:
Код ActionScript 3.0:
/*
получаем текущее время и дату
*/
var date:Date = new Date();
/*
переводим названия дней недели и месяцев на русский язык
*/
DateFormat.MONTHS = ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"];
DateFormat.DAYS = ["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"];
/*
форматируем дату
*/
trace(DateFormat.formatDate("d F Y", date));
На этом всё, что я хотел рассказать о полезном классе DateFormat. Сам класс можно скачать здесь.
/*
подключаем
*/
import DateFormat;
/*
обновляем
*/
var timer:Timer = new Timer(100, 0);
timer.addEventListener(TimerEvent.TIMER, onTickFunc);
timer.start();
function onTickFunc(event:TimerEvent):void
{
/*
получаем текущее время
*/
var now:Date = new Date();
/*
выводим в текстовое поле
*/
date_txt.text = DateFormat.formatDate("d:m:Y h:i:s", now);
}