Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчет времени 
V
    Опции темы
meridian
Дата 7.2.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 8.11.2005

Репутация: нет
Всего: нет



Добрый день!

Подскажите, как мне подсчитать время в часах между 2-мя датами ?

Пасиба
Добавлено @ 13:20
дата в формате dd.mm.yyyy hh:mm:ss
пример 06.02.2006 17:11:46

есть вот такая ф-ия, но расчет только дней м-у датами

Код

sub diffDates  
{

my ($date1 , $date2)= @_;

use POSIX ;

@array1 = split (/[\/\-: ]/, $date1 );
@array2 = split (/[\/\-: ]/, $date2 ); 


$array1[0]=($array1[0]-2000)+100;
$array2[0]=($array2[0]-2000)+100;

$time1 = POSIX::mktime (0 , 30 , 10 ,$array1[2], $array1[1], $array1[0]);
$time2 = POSIX::mktime (0 , 30 , 10, $array2[2], $array2[1], $array2[0]);

$time = POSIX::ceil ( ( $time2 - $time1 ) / 3600 / 24);

return $time;
}

PM   Вверх
korob2001
Дата 7.2.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Вот тебе небольшой пример:
Код

#!/usr/bin/perl -w
use strict;
use Date::Calc qw(Delta_DHMS);

my $date1 = "01.10.1988";
my $date2 = "01.10.1989";


my( $days1, $month1, $year1 ) = ($date1 =~ /^(\d{2})\.(\d{2})\.(\d{4})$/);
my( $days2, $month2, $year2 ) = ($date2 =~ /^(\d{2})\.(\d{2})\.(\d{4})$/);


my( $days, $hours, $minutes, $seconds ) = Delta_DHMS( $year1, $month1, $days1, 0, 0, 0,
                                                      $year2, $month2, $days2, 0, 0, 0 );

print "Разница между датами $date1 и $date2:\n";
print "Дней: $days\n";
print "Часов: $hours\n";
print "Минут: $minutes\n";
print "Секунд: $seconds\n";



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
meridian
Дата 7.2.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 8.11.2005

Репутация: нет
Всего: нет



Пасиб,
а если дата в формате 06.02.2006 17:11:46 ?
т.е.
my $date1 = "04.02.2006 17:11:46";
my $date2 = "06.02.2006 19:10:40";

Это сообщение отредактировал(а) meridian - 7.2.2006, 13:34
PM   Вверх
korob2001
Дата 7.2.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Вот подточил её под твой формат:
Код

#!/usr/bin/perl -w
use strict;
use Date::Calc qw(Delta_DHMS);

my $date1 = "01-10-1988 12:19:47";
my $date2 = "01-10-1989 11:35:51";


my( $days1, $month1, $year1, $hours1, $minutes1, $seconds1 ) = ($date1 =~ /^(\d{2})\-(\d{2})\-(\d{4})\s+(\d{1,2})\:(\d{2})\:(\d{2})$/);
my( $days2, $month2, $year2, $hours2, $minutes2, $seconds2 ) = ($date2 =~ /^(\d{2})\-(\d{2})\-(\d{4})\s+(\d{1,2})\:(\d{2})\:(\d{2})$/);


my( $days, $hours, $minutes, $seconds ) = Delta_DHMS( $year1, $month1, $days1, $hours1, $minutes1, $seconds1,
                                                      $year2, $month2, $days2, $hours2, $minutes2, $seconds2 );

print "Разница между датами '$date1' и '$date2' is:\n";
print "Дней: $days\n";
print "Часов: $hours\n";
print "Минут: $minutes\n";
print "Секунд: $seconds\n";


Это сообщение отредактировал(а) korob2001 - 7.2.2006, 13:36


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
meridian
Дата 7.2.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 8.11.2005

Репутация: нет
Всего: нет



Во, супер, пасиб, ща попробую
Добавлено @ 13:53
попробовал, пока не вышло, т.к. ограничен пока использованием только POSIX
шас поищу на CPAN Date::Calc
PM   Вверх
meridian
Дата 7.2.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 8.11.2005

Репутация: нет
Всего: нет



Пасиба, сделал с POSIX, но использовал твой парсер
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.