Just nu i M3-nätverket
Gå till innehåll

Perl: Få fram veckodag


A Persson

Rekommendera Poster

Behöver en perlkod som kan berätta vilken veckodag det är ett specifikt datum. Har sökt och sökt på nätet för att hitta någon sådan, men har inte hittat något som funkar utan att man först behöver installera moduler & liknande på servern, vilket är något jag inte har möjlighet att göra...

 

Exempel:

$year = 2010;

$mon = 02;

$date = 14;

 

Och det jag då vill få som resultat är:

$weekday = "sunday";

...eller:

$weekday = 7;

 

...eller något i den stilen. Någon som har en bra kod på lager för detta? Skulle göra mig GRYMT glad!!!

 

Mvh. Andreas

 

Länk till kommentar
Dela på andra webbplatser

Hej! Tack för dina tips!

Har läst igenom dessa sidor, men vad jag förstått så verkar även de vilja att man ska använda sig av en modul, vilket mitt webbhotell inte verkar vilja hjälpa mig att installera... :(

 

Av den anledningen så är jag på jakt efter någon som möjligtvis har en färdig kod där man inte behöver någon speciell modul... Verkar kanske som ett omöjligt uppdrag?...

 

Länk till kommentar
Dela på andra webbplatser

Testade du att labba med tex:

#!/usr/local/bin/perl
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
$year = 1900 + $yearOffset;
$theTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year";
print $theTime;

 

/Cluster

----------------------------------------------

Any fool can use a computer. Many do.

-----[ http://eforum.kicks-ass.net ]------

 

Länk till kommentar
Dela på andra webbplatser

Hej igen!

Snabba svar du har! Sånt gillar vi... ;)

 

Dock verkar det ju som att den senaste koden du skickade bara kan ge mig DAGENS veckodag. Jag vill kunna skriva in ett datum, t.ex. 2010-01-01 och sedan genom det få fram att det va en fredag. Känns som något som inte ska vara SÅ svårt att få till, men det verkar svårare än man tror... Finns det till exempel egentligen någon bra matematisk formel för att få fram en spcifik veckodag bara genom att man har ett datum??

 

Länk till kommentar
Dela på andra webbplatser

jojo, men det beror ju på att du bara kallar på localtime() utan att skicka in några argument. Men ser nu att det blir rätt krångligt eftersom du även måste räkna ut tidskillnaden mellan "nu" och ditt datum.

 

Testa istället:

use Time::Local 'timelocal_nocheck';

# An array to hold the names of each day of the week. 
my @weekday = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday);

# '09-11-2001' can be a parameter/argument you pass to the script
my $mm_dd_yyyy = '09-11-2001';
my $day_of_week = get_day($mm_dd_yyyy);
print "$mm_dd_yyyy was a $day_of_week";

sub get_day {
  my $date = shift || return(0); 
  my ($mon,$mday,$year) = $date =~ /(\d+)-(\d+)-(\d+)/;
  my $epochtime = timelocal_nocheck(0, 0, 0, $mday, $mon-1, $year);
  my $day = (localtime($epochtime))[6];
  return $weekday[$day];
}

 

/Cluster

----------------------------------------------

Any fool can use a computer. Many do.

-----[ http://eforum.kicks-ass.net ]------

 

Länk till kommentar
Dela på andra webbplatser

GRYMME!!! :thumbsup:

Supertack.. Va ju verkligen en simpel kod för att få fram det där svaret... Åtminstone en väldigt mycke kortare kod än vad jag hade förväntat mig... Verkar i alla fall funka klockrent av det jag testat hittills. Delar bara ut poäng till de som förtjänar det, och det har du verkligen gjort. Tack för att du tog dig tid att hjälpa mig!

 

Får man lite nyfiket fråga om du knackade ihop den där koden nu bara så här, eller om det är något du haft "på laget"?..

 

Länk till kommentar
Dela på andra webbplatser

Nej, koden kan jag inte ta åt mig äran för.

Det var alldeles för länge sedan jag knackade Perl för att kunna slänga ihop det nu, dock hade jag ett gammalt skript liggandes.

Det återfinns f.ö. även här:

http://www.daniweb.com/code/snippet216803.html

(tror dock inte att det var där jag ursprungligen hittade det)

 

Tack för poäng :thumbsup:

 

/Cluster

----------------------------------------------

Any fool can use a computer. Many do.

-----[ http://eforum.kicks-ass.net ]------

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...