Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 16
1

Перевод секунд в дату

03.06.2019, 15:32. Показов 3250. Ответов 8

Author24 — интернет-сервис помощи студентам
написал програмку, которая переводит секунды в дату. и столкнулся с проблемой что если секунды больше или около значения 2147483648 выдается "прошлая" дата.
2087-06-19-23-59-59
2087-06-20-23-59-59
1951-05-16-17-31-43
знатоки, кто может подсказать как оптимизировать эту часть скрипта, чтобы время "шло" дальше(2087-06-21-23-59-59 и т.д.)
вот мой "кусок" программы
Perl
1
2
3
4
5
6
use POSIX();
my $st = $ENV{'AccF'}; #Количество секунд, на которые необходимо увеличивать время.
my @local = (localtime)[0..7];
        $local[0]+=$st; #присваиваем к веремени секунды.
        $date = POSIX::strftime('%Y-%m-%d-%H-%M-%S', @local);
            print "$date\n";
вот здесь у меня затык. когда значение @local больше чем 2147483648 система дает сбой. может ли вообще strftime работать с longint числами? и если да, то каким образом мне объявить переменную local?
стоит perl 5, version 12, subversion 5 (v5.12.5) built for sun4-solaris-64int

думал сделать проверку типа if( $st > 2147483648 ) then.... и дальше не могу придумать, как реализовать.


P.S. просьба сильно не ругать. плюсик в карму за любую помощь. может скрипт другой предложите))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2019, 15:32
Ответы с готовыми решениями:

Конвертировать строку с датой и временем в число секунд и наоборот - число секунд в дату и время
Здравствуйте. Подскажите пожалуйста есть строки типа char/string: 2015.04.30 06:30 как перевести...

Из секунд в дату
Здравствуйте! у меня задача след: из секунд преоброзовать в дату и время. начиная с 2000года,...

Вытащить дату из секунд.
Ребята, RTC в stm32f1 это просто таймер в котором тикают секунды. Вопрос как преобразовать эти...

Преобразование секунд в дату и время
Как перевести секунды в дату и время? Но не с 1 января 1970 года, а просто в дату. Уже браузер...

8
418 / 178 / 27
Регистрация: 11.03.2018
Сообщений: 764
03.06.2019, 22:19 2
https://habr.com/ru/company/regru/blog/254453/
1
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 16
04.06.2019, 07:47  [ТС] 3
Большое спасибо за ссылку, все это уже читал, но так и не нашел в ней упоминаний о том, что поддерживается работа с числами больше 32 бит.
0
418 / 178 / 27
Регистрация: 11.03.2018
Сообщений: 764
04.06.2019, 13:05 4
Цитата Сообщение от ghfwer Посмотреть сообщение
но так и не нашел в ней упоминаний о том, что поддерживается работа с числами больше 32 бит
А упоминание в документации о том, что арифмит. манипуляции со временем производится прибавлением и вычитанием соответств. полей в функции POSIX::strftime ты находил ?
0
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 16
04.06.2019, 13:15  [ТС] 5
можно с этого момента поподробнее, пожалуйста?
0
418 / 178 / 27
Регистрация: 11.03.2018
Сообщений: 764
04.06.2019, 13:27 6
Кто сказал, что арифметика времени производится простым добавлением в поля функции strftime,
а в указанных в ссылках модулях, которые ты 'все уже читал', какие-то беспокойные ребята занимаются полнейшей ерундой,
разрабатывая данный функционал ?
0
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 16
04.06.2019, 13:37  [ТС] 7
так в том-то и проблема ,что простым сложением секунд работает до того момента, пока величина значения не становится слишком "тяжелой"
0
418 / 178 / 27
Регистрация: 11.03.2018
Сообщений: 764
04.06.2019, 17:49 8
Лучший ответ Сообщение было отмечено ghfwer как решение

Решение

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env perl -w -l
 
use Time::Piece;
use Time::Seconds;
 
 
my $t = localtime;
print "Time is $t\n";
print "Year is ", $t->year, "\n";
 
 
$t += ONE_DAY;      # add 1 day (constant from Time::Seconds)
 
print $t->datetime;     # 2000-02-29T12:34:56 (ISO 8601)
 
$t += 3_000_000_000;
 
print $t->datetime;
1
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 16
05.06.2019, 08:19  [ТС] 9
ОГОРОМАДНЕЙШЕЕ СПАСИБО!
0
05.06.2019, 08:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2019, 08:19
Помогаю со студенческими работами здесь

Вычесть одну дату из другой, результат поделить на 5, а затем получить количество секунд
Здравствуйте. У меня есть дата начала - beginDate. Это тип строка. Дата окончания - endDate....

Перевод секунд в минуты
Вот код програмки перевода секунды в минуты и часы и наоборот не пойму почему при нажатии кнопки...

Перевод секунд в минуты
Помогите составить программу, которая будет переводить секунды в минуты. Заранее спасибо!

Перевод минут и секунд в градусы
Добрый вечер! никак не могу понять алгоритм перевода минут и секунд в градусы... помогите!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru