PDA

Просмотр полной версии : дата и время


DJ_Baton
18.04.2008, 05:49
С часами проблем никаких нет, а вот время почему-то гонит
onEnterFrame = function () {

time = new Date();
date_time = time.getDate();
month_time = time.getMonth()+1;
year_time = time.getYear();
sec_time = time.getSeconds();
time_m = time.getMinutes();
time_th = time.getHours();
sec = sec_time*6;
min = time_m*6;
th = time_th*30+min/12;
if (month_time<10) {
month_time = "0"+month_time;
}
if (date_time<10) {
date_time = "0"+date_time;
}
if (sec_time<10) {
sec_time = "0"+sec_time;
}
if (time_th<10) {
time_th = "0"+time_th;
}
if (time_m<10) {
time_m = "0"+time_m;
}
};

С часами проблем ноль, а вот месяц почему-то принимает первый за ноль (пришлось тупо писать +1 чтобы подогнать под норму, это вообще глюк флэша или как ?

Год это вообще финиш, показывает 108 вместо 2008, мне и тут 1900 прибавлять что ли ? Маразм какойто )) В общем объясните плиз то ли у меня руки кривые то ли флэш чего-то не так обрабатывает.

Заранее спасибо!

iNils
18.04.2008, 06:07
1. Нумерация месяцев начинается с нуля. Сделано это для удобства работы с массивами содержащие названия месяцев.
2. Чтобы получить 2008 год, надо использовать метод getFullYear ()
3. Заглядывайте в хелп.

DJ_Baton
18.04.2008, 06:16
заглядывал, видимо невнимательно, спасибо :)

В итоге получил отличный скрипт который всего в одном динамическом поле выводит полностью дату и время ;)

onEnterFrame = function () {
time = new Date();
date_time = time.getDate();
month_time = time.getMonth()+1;
year_time = time.getFullYear();
sec_time = time.getSeconds();
time_m = time.getMinutes();
time_th = time.getHours();
if (month_time<10) {
month_time = "0"+month_time;
}
if (date_time<10) {
date_time = "0"+sec_time;
}
if (sec_time<10) {
sec_time = "0"+sec_time;
}
if (time_th<10) {
time_th = "0"+time_th;
}
if (time_m<10) {
time_m = "0"+time_m;
}
all_date = date_time+"."+month_time+"."+year_time+" | "+time_th+":"+time_m+":"+sec_time;
};

iNils
18.04.2008, 06:37
Я бы сделал так
function twoDigit (num:Number):String {
var str:String = "";
if (num < 10) {
str += "0";
}
str += String (num);
return str;
}
onEnterFrame = function () {
var time:Date = new Date ();
var array:Array = time.toString ().split (" ");
trace (twoDigit (time.getDate ()) + "." + twoDigit (time.getMonth () + 1) + "." + time.getFullYear () + " | " + array[3]);
};

DJ_Baton
18.04.2008, 14:48
Да супер, компактнее и гибче вышла у тебя =) просто я скрипт не так хорошо знаю, свой скрипт я досконально понимаю и знаю где какая функция, в твоём увы не все функции мне понятны :(

Хотя и в моём есть плюсы, на основе моего можно элементарно сделать механические часы и выводить к уже присвоенным переменным отдельные динамические тексты, т.е. вывести отдельно секунды, часы и т.п.

iNils
18.04.2008, 17:44
Для механических часов, ноль перед цифрой не нужен, поэтому задача изначально проще.
А в моем коде наверно непонятно как выводится время (день, месяц и год также как и у вас, просто общую часть кода вынесли в отдельную функцию). Объясняю:
1. Если вывести просто time, то мы получим такой текст
Fri Apr 18 16:05:06 GMT+0400 2008. То есть, в этой строке уже есть готовое время с нулем в начале, нам нужно его только вытащить.
2. Для этого мы объект дата сначала преобразовываем в строку
time.toString ()
3. Теперь разбиваем эту строку в массив, используя в качестве разделителя пробел
time.toString ().split (" ");
4. Полученный массив имеет такое содержимое
Fri,Apr,18,16:40:25,GMT+0400,2008И мы видим, что четвертый элемент массива, это искоемое время. Остается только его вывести.
5. Отсчет элементов массива начинается с нуля. Поэтому наш четвертый элемент имеет индекс 3 - (0,1,2,3)
trace (array[3])

DJ_Baton
23.04.2008, 06:34
А вот ещё возник вопрос, есть ли какой-нибудь способ привязать часы к определенному часовому поясу, т.е. что бы чётко показывалось правильное время в определенной стране ? Понимаю что для этого через Get|Post скорее всего нужно обрабатывать через PhP, но всё же может у макромедии/адоба есть какой-то свой часовой сервер и спец. функции во флэше под это дело ?

qazwsx
23.04.2008, 08:37
Нужно иногда и хелп читать. Используя метод getDate(), getSeconds() и пр. Време берется с часов находящихся на компьютере пользователя >_>

iNils
23.04.2008, 13:52
Метод getTimezoneOffset() показывает ваш часовой пояс (если он правильно выставлен в системе), таким образом можете узнать время по Гринвичу и сделать смещение на другой часовой пояс.

DJ_Baton
23.04.2008, 20:29
qazwsx, ))) это и так ясно :D
iNils, данные часового пояса соответственно с моего компа берутся ? т.е. моя задача что бы часы на сайте показывали точное время по Киеву для всех находящихся на сайте, getTimezoneOffset() как я понимаю берут данные локальной тачки, а не сверяются с сервером в инете

iNils
23.04.2008, 20:34
С вашего.
А для вашей задачи нужно лишь передать время сервера во время загрузки, а дальше лишь добавлять к этому времени, время прошедшие со старта флешки, а не ломится постоянно на сервер.