Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Можно ли из одного значения времени в формате HH:MM:SS (например, полученного из глобальной переменной [time24]) отнять другое значение времени в том же формате и получить результат в том же формате HH:MM:SS? Без перевода в секунды и без парсинга содержимого каждого значения времени - это долго, если значений очень много...
Пример (представим, что вместо значений времени переменные): 17:50:00 - 09:25:10 = 08:25:50
Ну и сложение значений времени также интересует...
Если ты собрался отнимать или прибавлять время, и результат количеством будет превышать пределы текущих суток, то вероятно нужно учитывать еще и дату в днях, а не только время. Иначе какой в этом будет смысл получить время в часах, если к примеру от 10:00:00 отнять 23:00:00, получится 11:00:00. Что это тебе скажет? То ли это 11ч вчерашнего дня, то ли время на час вперед прибавили... Как задавать вопросы
ну в js/vbs есть уже готовые команды для работы с датами и временем, ты определись в каком виде тебе это надо, что будет подаваться на вход, что ожидать на выходе... работает также, т.е. вычисляется кол-во миллисекунд для каждой даты от фиксированной даты в прошлом, мсек складываются или вычитаются, результат переводится в новую дату+время Как задавать вопросы
Обе переменные скриптом приводятся в полный вид даты и времени, затем берется общее начало отсчета, типа 01.01.1970 00:00:00, далее для переменных вычисляется количество секунд с начала отсчета, и результат преобразовывается из секунд в часы минуты секунды.
А, понятно! Я почему-то дни и время в понимании не соединил. Пока что я иначе проблему собрался решить (вычисляю разность значений времени сразу после получения второго значения, это снимает трудности с днями, надо только переход на другие сутки проконтролировать простым условием), однако вопрос об арифметических операциях над значениями времени для меня остался открытым, поэтому создал тему. Раз есть готовые функции, то наверное можно будет при необходимости прикрутить какую-нибудь и к проекту NeoBook!
Добавлено (02 Апреля 2013, 12:27) ---------------------------------------------
Вот забавно! А для кого я говорил о переводе времени в секунды, т.е привести все "к одному знаменателю" для расчета разницы? - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Я просто не понял тебя сразу, что и дни нужно приводить к секундам. Не сталкивался никогда с такой задачей. Сработал стереотип восприятия в котором время - это часы, минуты, секунды, а дни - это дни . Ну, теперь понимаю! Спасибо! Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
и результат преобразовывается из секунд в часы минуты секунды.
Вот это и не получается.
Цитата (mishem)
есть плагин, ищи
Посмотрел в своей базе, не нашел.
Что-то я конкретно туплю, кэп. Перевести время (дни+часы+минуты+секунды) в секунды можно легко, а вот обратно... Есть секунды, их нужно перевести в дни, часы, минуты и секунды средствами NeoBook. Как это можно сделать?
Я в больнице лежал, посмотреть не мог. Нет, я перепутал с днями.
Не таймер делаешь? Поищи тему по таймерам, там обсуждали это. Не разберешься, стучи. Вспоминать просто надо, а вспоминать, значит все заново. Не хочешь читать хелп?
Нет, есть два замера времени, я получаю разницу между ними (вычитая из более позднего значения более раннее), а разницу эту (она в секундах) нужно перевести теперь в читаемый вид. Разница эта может быть от секунды и до часов, дней...
Нужно из одной переменной (число секунд) сделать четыре (дни, часы, минуты, секунды).
Темы с таймером я посмотрел, Пётр давал на них ссылки, но почему-то у меня код дает некорректный результат, либо я что-то не то делаю... Вот тема была: _http://neobooker.ru/forum/22-1625-1 Вот пример Петра: _http://neobooker.ru/forum/22-1625-26966-16-1266032239
Алгоритм должен работать и на 55555555 секунд, и на 5 секунд. Скажем, получили 5 секунд, их надо перевести в дни, часы, минуты, секунды. Должно получиться: 0 дн. 0 час. 0 мин. 5 сек. А если есть 105 секунд, то должно получиться: 0 дн. 0 час. 1 мин. 45 сек.
Судя по описанию команд ни одна из них не переводит секунды в дни\часы\минуты\секунды.
Добавлено (09 Апреля 2013, 22:19) ---------------------------------------------
Цитата (mishem)
Наверно где плюс, - поставить?
Добавлено (09 Апреля 2013, 22:24) --------------------------------------------- При делении возникают проблемы. 79секунд/60=1.316666667 но 79 секунд это не 1 минута и 32 секунды, а 1 минута и 19 секунд...
Скажем, получили 5 секунд, их надо перевести в дни, часы, минуты, секунды.
Я вот тебя не пойму если честно. минута=60 сек час=3 600 сек сутки=86 400 сек год= 31536000 сек если не високосный.
Как высчитывать дни в високосном году читай здесь.
Если 5 сек меньше 60 то наверно все остальное будет ноль? Если 55 555 555 меньше 31 536 000 то при делении 55 мил на 31 мы получим 1 год? ну и т.д.
Здесь нужно определится с високосным годом, был или небыл в этом промежутке. А все остальное мне кажется не составляет никакого труда.
Добавлено (09 Апреля 2013, 22:27) ---------------------------------------------
Цитата (Вадим)
но 79 секунд это не 1 минута и 32 секунды, а 1 минута и 19 секунд...
все с тобой ясно.
79 секунд, это 1 минута и 79-60=19 секунд.
Добавлено (09 Апреля 2013, 22:29) --------------------------------------------- 154 секунды это 154/60=2 154-2*60=34 Я ж тебе говорю, минус поставь.
Добавлено (09 Апреля 2013, 22:45) --------------------------------------------- Получаем сколько лет 55555555/31536000 = 1 год Получаем сколько осталось секунд 55555555-31536000*1=24019555 Получаем сколько дней 24019555/86 400=278 дней Получаем сколько осталось секунд 24019555-278*86 400=355 Получаем сколько часов 355/3600=0 часов Получаем минуты 355/60=5 минут Получаем оставшиеся секунды 355-5*60=55 сек.
1 год 278 дней 0 часов 55 сек.
Соответственно нужно ставить проверку на 0, если ноль до запятой, то не надо ничего умножать вычитать.