[PHP] Week en dag omzetten in Timestamp

Pagina: 1
Acties:
  • 166 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 21:11
Ik ben bezig met een script waarin je je werkuren kunt registreren.
In dit script moet je de week en de weekdag kiezen.

Nu wil ik deze datum als een timestamp in de database plaatsen, ik heb vanalles geprobeerd met stroftime() mktime() en dergelijke.

Helaas kom ik niet tot een oplossing.
Iemand een idee hoe ik dit kan oplossen ?

Heb het volgende al geprobeerd:
PHP:
1
2
3
<?php
stroftime("+".$_POST['date_week']." weeks ".$_POST['date_day']." days","1 January ".$_POST['date_year']."");
?>

Maar dat blijkt niet te werken omdat de 1e dag van 2004 op Donderdag begint en op de 1 of andere manier dus 10 dagen teveel telt.


Het formulier script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
function form_week($week = '',$day = '')
    {
    if (!$week)     { $week = date("W"); }
    if (!$day)      { $day = date("w"); }
        
    echo("<tr>
            <td width=\"200\" class=\"form_text\" valign=\"top\">
                Jaar,Week en dag
            </td>
            <td width=\"200\" class=\"form_field\">
                <select name=\"date_week\" style=\"width:136px;\">
                <option value=\"".date("W")."\">Deze week (".date("W").")</option>
                <option></option>
                ");
                $num = 01;
                while($num != 53)
                    {
                    echo("<option value=\"".$num."\">Week ".$num." </option>");
                    $num++;
                    }
            echo("</select><select name=\"date_year\" style=\"width:60px;\">
                <option value=\"".date("Y")."\">".date("Y")."</option>
                <option></option>
                ");
                $num = (date("Y") - 1);
                while($num != date("Y") +1 )
                    {
                    echo("<option value=\"".$num."\">".$num." </option>");
                    $num++;
                    }
            echo("</select>
                <br>
                <input name=\"date_day\" type=\"radio\" value=\"01\""); if ($day == "1") { echo(" checked"); }echo(">Ma
                <input name=\"date_day\" type=\"radio\" value=\"02\""); if ($day == "2") { echo(" checked"); }echo(">Di
                <input name=\"date_day\" type=\"radio\" value=\"03\""); if ($day == "3") { echo(" checked"); }echo(">Wo
                <input name=\"date_day\" type=\"radio\" value=\"04\""); if ($day == "4") { echo(" checked"); }echo(">Do
                <input name=\"date_day\" type=\"radio\" value=\"05\""); if ($day == "5") { echo(" checked"); }echo(">Vr
                <input name=\"date_day\" type=\"radio\" value=\"06\""); if ($day == "6") { echo(" checked"); }echo(">Za
                <input name=\"date_day\" type=\"radio\" value=\"07\""); if ($day == "7") { echo(" checked"); }echo(">Zo
            </td>
        </tr>");
    }

?>

[ Voor 81% gewijzigd door GewoonNico op 19-10-2004 18:21 ]


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Mja, het 'probleem' zit een beetje in het feit dat je weeknummers gebruikt. Het is een zeer legitieme unit, maar de functies die je wilt gebruiken (mktime) hebben geen parameter voor het weeknummer.

Ehm, na enig leeswerk: gebruik je niet de verkeerde functie? Moet je niet strtotime hebben?

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 20:50

Pelle

🚴‍♂️

-> P&W

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Je script klopt sowieso niet; als ik nu bijvoorbeeld op 1 januari 2005 zit - da's week 53. Nu ga jij 53 weken optellen bij 1 januari 2005 :?

Je zult zelf een algorithme moeten verzinnen/zoeken die aan de hand van een weeknummer en het jaartal de datum van bijvoorbeeld de maandag in die week kan bepalen.
Let op dat de Amerikaanse weektelling afwijkt van de Gregoriaanse zoals we die hier in Europa gebruiken, en dat ook als de 1e dag van de week soms maandag en soms zondag genomen wordt.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 21:11
ehh, ik bedoel strtotime()
Had bovenstaande kleine scriptje ff uit me hoofd gedaan en heb me vergist in strtotime();

Goed,
ik zal dus moeten afwijken van de weeknummers en gewoon moeten kiezen voor een keuze als dag/maand/jaar

Jammer

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Als je nou gewoon eens de usercomments op http://www.php.net/strtotime doorleest; daar staat gewoon een voorbeeld tussen hoe je van een weeknummer naar een datum kan rekenen...

Intentionally left blank

Pagina: 1