Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Date расписание (http://www.flasher.ru/forum/showthread.php?t=204958)

GrafMine 15.11.2013 05:10

Date расписание
 
Появилась идея реализовать расписание, но столкнулся с проблемой:
Код AS3:

var now:Date = new Date();
trace(now.getHours() + ":" + now.getMinutes());    // 10:20

При проверки времени нужно проверить попадаю ли я в определенный промежуток времени например
Код AS3:

"startTime":"10:00:00","endTime":"10:45:00"

как мне сравнить полученное время(от PC) с текстом "10:00:00" ? и при этом просчитать сколько осталось до конца промежутка( и в дальнейшем вести обратный отсчет до нуля)?
Так же интересует существует ли способ получение времени не с компа и не через ( getUTCHours()\getUTCMinutes() ), а вообще через интернет получить киевское время ?

am_devcorp 15.11.2013 05:49

> как мне сравнить полученное время(от PC) с текстом "10:00:00"
Разбиваешь его на часы-минуты-секунды и сравниваешь как два числа, имея в виду, что вместо тысяч-сотен-десятков у тебя часы-минуты-секунды

Допустим сейчас 04:50:00 утра.
Нам надо узнать, было уже 5:11:00 утра или нет
Код AS3:

            var now:Date = new Date();
            var current:Array = [now.getHours(), now.getMinutes(), now.getSeconds()];
            var alarm:String = "05:11:00";
            var arr_alarm:Array = alarm.split(":");
 
            var f:Boolean = true
            var before:Boolean
            for (var i:int = 0; i < current.length &amp;f; ++i) {
                if (current[i] < arr_alarm[i]) {
                    before = true;
                    f = false;
                } else if (current[i] > arr_alarm[i]){
                    before = false;
                    f = false;
                }
            }
            trace(before);
            trace(now.getTime()-new Date(2013,10,15,5,11,0,0).getTime())

Последний trace выводит разницу текущего времени и 5:11 утра сегодня
//где-то тут точно какая-то фигня, потому что сейчас 4:50 утра и у меня сломался дебаггер : (
(там в цикле написано &&f, у форума какая-то бага)

Dukobpa3 15.11.2013 05:50

Цитата:

как мне сравнить полученное время(от PC) с текстом "10:00:00"
Перевести текст в Date. Это можно сделать руками, порезав по двоеточию и поставив часы, минуты и секунды к нужной дате. Но поидее должны быть методы заполнения объекта Date из строки, поглядите.

Сравнивать можно просто:
Код AS3:

var date1:Date = new Date();
var date2:Date = new Date();
if (date1 >= date2) trace("check");

Всякие прочие расчеты удобннее проводить с юникс-таймом(date.getTime()). Это будет флоат цифра, интегер это кол-во секунд с какого-то там 70-го года, и дробная часть - милисекунды. Вцелом можно вообще всю свою систему на этом построить, но иногда удобнее конкретные даты сравнивать.

Насчет получить время из тырнета ниче не скажу. Поидее все сервера для синхронизации времени дают некий get-url по которому выдается нужная информация. Нужно выяснить формат в котором они выдают ответ и парсить его. А дальше дело техники URLLoader и погнали.

Добавлено через 58 секунд
Предыдущий ответ дикий оверхед и пример как не стоит работать с датами в ас3 :) Уж простите, но это так.

am_devcorp 15.11.2013 05:59

Насчёт получения времени.
1.Делаешь запрос, например, сюда:
http://www.timeapi.org/utc/now
2. получаешь ответ и парсишь.
3. Тот сервис возвращает время в UTC, поэтому используешь now.setUTCHours()/Minutes/Seconds чтоб поставить время в UTC
4. ...
5. делаешь что там надо дальше.

А можно сделать запрос сюда: http://www.timeapi.org/+4/ для получения времени в UTC+4

Мой предыдущий ответ был таким тупым потому что -о, боги!- уже пять утра и я был не прочь написать немного индусского кода :D

GrafMine 15.11.2013 13:31

Цитата:

Сообщение от am_devcorp (Сообщение 1152516)
А можно сделать запрос сюда: http://www.timeapi.org/+4/ для получения времени в UTC+4

Что я делаю не так ? :
Код AS3:

protected function button8_clickHandler(event:MouseEvent):void{
                                            var request:URLRequest = new URLRequest("http://www.timeapi.org/+2/now?\I:\M:\S");                                                       
                                loader = new URLLoader();                               
                                try {
                                        loader.load(request);
                                }
                                catch (error:SecurityError)
                                {
                                        trace("A SecurityError has occurred.");
                                }
 
                                loader.addEventListener(Event.COMPLETE, loadcomplete);                       
 
                        }
                        private function loadcomplete(event:Event) {
                                try {
                                        var now_Time:String = new String(loader.data);
                                        trace(now_Time);
 
 
                                } catch (e:TypeError) {
                                        trace("Could not parse the XML file.");
                                }
                        }

Выводит :
Код AS3:

I:M:S

Добавлено через 9 минут
Обошел проблему путем другой ссылки

am_devcorp 15.11.2013 15:33

Тут ссылка
Код AS3:

http://www.timeapi.org/+2/now?\I:\M:\S

В ней эскейпятся символы I, M, S.
в коде надо было писать
Код AS3:

http://www.timeapi.org/+2/now?\\I:\\M:\\S

, вот и всё.


Часовой пояс GMT +4, время: 00:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.