Forum Webscript.Ru

Программирование => Perl => Тема начата: Гость от 06 Сентября 2002, 08:57:39

Название: Не текущий день недели
Отправлено: Гость от 06 Сентября 2002, 08:57:39
Передо мною стоит задача. Нужно определить день недели, при заданных: год, месяц, число.
При этом в моем распоряжении только базовый набор модулей.
Буду рад советам и помощи.
Название: Не текущий день недели
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 06 Сентября 2002, 12:57:47
$aaa=(localtime $DATE)[6];
print "$aaa";

где $DATE - полное время всекундах с начала эпохи, его можешь подсчитать сам ;-))
Название: Не текущий день недели
Отправлено: NeoNox от 06 Сентября 2002, 13:07:20
О сколько нам открытий чудных, готовит прочтение ФАК в этом разделе. Можно его даже распечатать, но лучше раз 10 переписать от руки.

ЗЫ. "Все уже украдено до нас" (С) Операция "Ы"
Название: Не текущий день недели
Отправлено: Serchey от 06 Сентября 2002, 17:35:24
#!/usr/bin/perl -w
use strict;

my $date = \'2002-09-06\';

sub dayofweek {
 my @years = (0, 2, 3, 4);
 my @month = (undef, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5);
 my @days = (\'Sun\', \'Mon\', \'Tue\', \'Wed\', \'Thu\', \'Fri\', \'Sat\');

 my $date = shift;
 my ($yy, $mm, $dd) = split(/\\-/, $date);

 $dd =~ s/^0//;
 $mm =~ s/^0//;
 my($tmp, $a, $b, $c, $e);
 $tmp = $yy - 1996;
 $a = $tmp & 3;
 $b = ($tmp >> 2) + ($tmp & hex("FC"));
 $c = $month[$mm];

 if($a == 0 && $mm > 2){$c++;}
 $a = $years[$a];
 $e = ($a+$b+$c+$dd) % 7;

 return $days[$e];
}

print "The day($date) is: ".dayofweek($date)."\\n"
Название: Не текущий день недели
Отправлено: USE от 06 Сентября 2002, 22:27:36
Цитировать
О сколько нам открытий чудных, готовит прочтение ФАК в этом разделе. Можно его даже распечатать, но лучше раз 10 переписать от руки.


http://forums.webscript.ru/announcement.php?s=&forumid=14#q6.4

как раз случайно посмотрел его :) и аж самому смешно стало :)
Название: Не текущий день недели
Отправлено: Serchey от 07 Сентября 2002, 00:48:40
Но мне и так хорошо!... :) Чё эт я должен зависить от каких-то там модулей!?
Название: Не текущий день недели
Отправлено: Гость от 09 Сентября 2002, 12:40:05
Спасибо!
Название: Не текущий день недели
Отправлено: Гость от 09 Сентября 2002, 12:43:43
Кстати, фак я читал о написания этого поста в форуме. Однако, сравните сказанное там и сказанное здесь. Предлагаю его дополнить постом Serchey.
Еще раз спасибо!
Название: Не текущий день недели
Отправлено: Гость от 10 Сентября 2002, 17:08:08
Знаю, замучил, но очередной вопрос:
При попытке задать нечто вроде

my $date = \'$year-$mon-01\';

Происходит не задача. Как устранить это?
Еще больший глюк происходит при попытке

$d = .dayofweek($date).;
print "The day($date) is: "$d"\\n"

Что делать.
Варианты про прочтению книги Чернышевского прошу опустить :D
Название: Не текущий день недели
Отправлено: Гость от 10 Сентября 2002, 17:11:01
Знаю, надоел, но все же 2 вопроса по этому коду:
Не срабатывает подобная запись

my $date = \'$year\\-$mon\\-$day\';

500 ошибка при:

$d = ".dayofweek($date).";
print "The day($date) is: "$d"\\n"

Как избавиться от этих проблемм?
Название: Не текущий день недели
Отправлено: Mog. от 10 Сентября 2002, 17:29:33
Цитировать
Не срабатывает подобная запись
my $date = \'$year\\-$mon\\-$day\';

попробуй
my $date = "$year-$mon-$day";

Цитировать
500 ошибка при:

$d = ".dayofweek($date).";
print "The day($date) is: "$d"\\n"


Еще бы.
Попробуй так
$d = dayofweek($date);
print  "The day($date) is: $d\\n";
Название: Не текущий день недели
Отправлено: Гость от 10 Сентября 2002, 17:56:14
Спасибо, все работает :)
my $date = "$year-$mon-$day";
Здесь я про двойные кавычки забыл... Бывает :(
Название: Не текущий день недели
Отправлено: Serchey от 10 Сентября 2002, 19:47:37
Ну вы, блин, даёте!!! :)
Название: Не текущий день недели
Отправлено: Гость от 10 Сентября 2002, 20:08:26
Бывает... :D