PHP, räkna ut vecka från datum

Trädvy Permalänk
Medlem
Registrerad
Okt 2002

PHP, räkna ut vecka från datum

Försöker räkna ut vilken vecka det kommer vara ett visst datum.
Har t.ex. datumet 2009-08-31 och vill få fram vilken vecka det är då.
Föslag?:)

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2004

echo date( 'W', strtotime( '2009-08-31' ) );

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

$date = '2009-08-31'; $week = date('W', strtotime($date)); echo $week;

edit: damn, du hann före. Fast jag lärde mig om PHP-taggen

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Registrerad
Okt 2002

Det var ganska lätt när man visste hur man skulle göra
Tack för den snabba hjälpen!

edit: Säg nu inte att man kan visa vilken veckodag det är på liknande sätt...

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2007
Citat:

Ursprungligen inskrivet av mel0dy
Det var ganska lätt när man visste hur man skulle göra
Tack för den snabba hjälpen!

edit: Säg nu inte att man kan visa vilken veckodag det är på liknande sätt...

echo date("l", strtotime("2009-08-31")); // Alternativt om du har rätt locale och vill ha texten på svenska echo strftime("%A", strtotime("2009-08-31")); // Sätta rätt locale kan du göra så här: setlocale(LC_ALL, 'sv_SV');

Trädvy Permalänk
Medlem
Registrerad
Okt 2002

Skriver det ut vilken veckodag det är, som t.ex. måndag, tisdag osv?

Trädvy Permalänk
Medlem
Plats
Lycksele
Registrerad
Feb 2009

vissa länder börjar veckan på söndag
andra på måndag, som i sverige

det går nog att fixa ganska lätt så du får antingen ett resultat för sverige-typen
eller om du kör en internationell website Internationell standard

/halo

ASUS P8Z77-V DELUXE, Core i7 3770K@4.2GHz, Noctua NH-U12P SE2, Corsair 8GB 1600MHz, Gigabyte GTX 650Ti 2GB,
Samsung Pro 840 256GB, 1TB WD Green, be Quiet! E9 680W Modulär, Fractal Define R4

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2004

Ta en titt här annars: http://se2.php.net/manual/en/function.date.php (eller här om du vill ha språkstöd: http://se2.php.net/manual/en/function.strftime.php ).

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2007
Citat:

Ursprungligen inskrivet av mel0dy
Skriver det ut vilken veckodag det är, som t.ex. måndag, tisdag osv?

Ja. Eller, vilken veckodag 2009-08-31 är. Vill du ha dagens datum kan du ta bort strtotime.

Trädvy Permalänk
Medlem
Registrerad
Okt 2002

Haha, fan också...var ju lite smidigare än min nuvarande lösning
Sånt som händer när man försöker sig på något lite mer avancerat i ett språk man inte behärskar.
Såhär hade jag löst det, varning för mycket kod:

//Här börjar en matematisk formel för att räkna ut vilken dag i veckan ett visst datum blir //Delar upp $datum i år, månad och dagar $delar = array(); $strang = $datum; $delar = explode("-", $strang); $year = $delar[0]; $month = $delar[1]; $day = $delar[2]; //tar bort de två första siffrorna i $year, 2009 blir 09 $year = substr($year, 2); //$year multipliceras med 1.25 och avrundas neråt $year = $year * 1.25; $year = floor($year); //Månaderna får nya värden, t.ex. så ska Januari bli 6, inte 1. //Har lagt till en bokstav i början, så att värdet blir unikt och inte hoppar in i en av de andra if-satserna, bokstaven raderas efter if-satserna. if($month == 1) { $month = a6; } if($month == 2) { $month = b9; } if($month == 3) { $month = c9; } if($month == 4) { $month = d5; } if($month == 5) { $month = e7; } if($month == 6) { $month = f3; } if($month == 7) { $month = g5; } //augusti ska bli 8, vilket det redan är. if($month == 9) { $month = h4; } if($month == 10) { $month = i6; } if($month == 11) { $month = j9; } if($month == 12) { $month = k4; } //tar bort bokstaven och ger endast en siffra som värde, tex k4 blir 4 $month = substr($month, 1); $weekday = $year+$month+$day; //Sju subtraheras tills värdet blir mindre än åtta if ($weekday > 7) { $weekday = $weekday - 7; } if ($weekday > 7) { $weekday = $weekday - 7; } if ($weekday > 7) { $weekday = $weekday - 7; } if ($weekday > 7) { $weekday = $weekday - 7; } if ($weekday > 7) { $weekday = $weekday - 7; } if ($weekday > 7) { $weekday = $weekday - 7; } if ($weekday > 7) { $weekday = $weekday - 7; } //veckodagen tilldelas en sträng, 1 = måndag osv. if($weekday == 1) { $weekday = "Mon"; } if($weekday == 2) { $weekday = "Tue"; } if($weekday == 3) { $weekday = "Wed"; } if($weekday == 4) { $weekday = "Thu"; } if($weekday == 5) { $weekday = "Fri"; } if($weekday == 6) { $weekday = "Sat"; } if($weekday == 7) { $weekday = "Sun"; } echo "<br />"; echo $weekday." är din valda veckodag!";

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2007

Oj. Den algoritmen skulle för övrigt kunna förkortas en del.
Du skulle kunna ersätta din första ifsats med en switch-sats (och därmed slippa lägga till bokstäver). Andra ifsatsen skulle nog kunna skrivas om till en modulo-operation. Sista ifsatsen kan även den skrivas som en switch-sats.

Trädvy Permalänk
Medlem
Registrerad
Okt 2002

Misstänkte att den skulle kunna förkortas, ska sätta mig o plugga på lite innan jag forstätter