Как вы можете сэкономить время, используя встроенный класс Date? - PullRequest
1 голос
/ 13 апреля 2009

Цель этого вопроса - собрать решения для расчета даты / времени, используя встроенный класс Date вместо написания длинных сложных функций.

Я сам напишу несколько ответов и приму ответ, если кто-нибудь придумает что-нибудь очень умное. Но это в основном набор решений, так как я часто вижу слишком сложный код для обработки дат.

Пожалуйста, помните, что это не для длинных решений для вещей, которые класс Date не может сделать.

Хорошее место для начала - ссылка, найденная здесь: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/Date.html

Ответы [ 5 ]

1 голос
/ 09 августа 2010

Там также ObjectUtil.dateCompare(a,b)

1 голос
/ 13 апреля 2009

Вы можете легко узнать, был ли год високосным, не кодируя все исключения из правила, используя класс Date. Вычитая один день из мартов 1-го (запрашивая марты 0-го), вы можете узнать количество дней в феврале.

Помните, что месяц имеет нулевой индекс, поэтому у Мартса, являющегося третьим месяцем, индекс 2.

function CheckIfYearIsLeapYear(year:uint):Boolean
{
    return new Date(year, 2, 0).Date == 29;
}
1 голос
/ 13 апреля 2009

Чтобы правильно сравнивать даты, вам нужно использовать функцию getTime (), она даст вам время в миллисекундах с 1 января 1970 года. Что позволяет легко сравнивать даты, более поздняя дата возвращает большее значение.

Вы можете вычесть одно из другого, чтобы получить разницу, но, к сожалению, нет встроенного класса промежутка времени, чтобы справиться с этим чисто; вам придется использовать немного математики, чтобы правильно представить разницу пользователю (например, разделить разницу на число миллисекунд в дне, чтобы получить разницу в днях).

var date1:Date = new Date(1994, 12, 24);
var date2:Date = new Date(1991, 1, 3);
if(date1.getTime() > date2.getTime())
    trace("date1 is after date2");
else
    trace("date2 is after or the same as date1");
0 голосов
/ 13 апреля 2009

Встроенный класс Date отлично справляется с «переполнением», его можно использовать для добавления или вычитания времени. Если одно из полей переполняется, класс даты обрабатывает его, добавляя или вычитая переполнение.

var date:Date = new Date(1993, 12, 28);
trace("7 days after the " + date.toLocaleDateString());
date.setDate(date.Date + 7);
trace("It was the " + date.toLocaleDateString());
0 голосов
/ 13 апреля 2009

Чтобы получить текущую системную дату, просто создайте новый объект Date, не передавая никаких значений конструктору. Как это:

var today:Date = new Date();
trace("The date and time right now is: " + today. toLocaleString());
trace("The date right now is: " + today. toLocaleDateString());
trace("The time right now is: " + today. toLocaleTimeString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...