Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] obliczenie daty
Forum PHP.pl > Forum > PHP
gosienkami
jak zrobic zeby po wpisaniu daty w jednym polu tekstowym, w drugim polu wyswtlała sie data(dodane 365 dni) czyli wpisujemy 26-04-2008 a wyswietla sie 25-04-2009 ?
Mlodycompany
  1. <form action="index.php" method="post">
  2. <input type="text" name="dzien">
  3. <input type="text" name="miesiac">
  4. <input type="text" name="rok">
  5. <input type="submit" value="ok">
  6. </form>
  7. <?php
  8. $dzien = $_POST['dzien'];
  9. $miesiac = $_POST['miesiac'];
  10. $rok = $_POST['rok'] + 1;
  11. echo $dzien,'.',$miesiac,'.',$rok
  12. ?>

chyba chodzi o to ale nie jestem pewien
Crozin
  1. <?php
  2.  
  3. //data z formularza
  4. $data1 = '2004-12-5';
  5.  
  6. //zamieniamy na forme UNIXowa
  7. $data1 = strtotime($data1);
  8.  
  9. //dodajemy "+ rok"
  10. $data1 += 60 * 60 * 24 * 365;
  11.  
  12. echo date('Y-m-d', $data1);
  13.  
  14. ?>
oscar17
Można jeszcze krócej:
Kod
$data1 = '2004-12-05';
$data2 = date("Y-m-d",strtotime($data1."+1 year"));

echo $data2;
gosienkami
mam taki bład Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in c:/ w tej liniii data2 = date("Y-m-d",strtotime($data1."+1 year"));
vokiel
Może masz ustawione inaczej kolejność miesięcy, dni, lat. W pierwszym poście piszesz 26-04-2008 zatem u Ciebie powinno być:
  1. <?php
  2. $data1 = '26-04-2008';
  3. // dzien - miesiac - rok
  4. $data2 = date("d-m-Y",strtotime($data1."+1 year"));
  5. echo $data2;
  6. // poza tym przy pracy z datami w php 5 jest dobrze ustawić domyślną strefę czasow
    ą gdzieś na początku skryptu
  7. date_default_timezone_set('Europe/Warsaw');
  8. ?>
gosienkami
kurde dalej nie działa:(
batman
Kombinujecie jak koń pod górkę. Czasem najprostsze rozwiązania są najlepsze winksmiley.jpg
  1. <?php
  2. $date1 = '26-04-2008';
  3. // zakladajac, ze data rozdzielona jest myslnikami, a format daty to format europe
    jski: dd-mm-yyyy
  4. $adate = explode('-', $date1);
  5. $date2 = date('d-m-Y', mktime(0, 0, 0, $adate[1], $adate[0] + 365, $adate[2]));
  6. echo $date2;
  7. ?>
gosienkami
ale to jest na stałe a ja chce zeby w jednym polu tekstowym wpisac 28-04-2008
a w drugim polu zeby sie wczytała data poprzedzajaca o cały rok z tym ze 27-04-2009
PawelC
jeżeli w jednym pliku ma to być to:
  1. <form method="POST" action="data.php?data=1">
  2. Podana data:
  3. <input type="Text" name="data" value="">
  4. Rok później:
  5. <input type="Text" name="data2" value='<?php
  6. if($_GET['data']==1){
  7. $date1 = $_POST['data'];
  8. $adate = explode('-', $date1);
  9. $date2 = date('d-m-Y, mktime(0, 0, 0, $adate[1], $adate[0] + 365, $adate[2])');
  10. echo $date2;
  11. }
  12. ?>
  13. '>
  14. <input type="submit" value="oblicz"></form>
bim2
ExPloit, jak już kopiujesz to z głową...
  1. <?php
  2. $date2 = date('d-m-Y', mktime(0, 0, 0, $adate[1], $adate[0] + 365, $adate[2]));
  3. ?>
gosienkami
tylko zawsze ma wyswietlac o jeden dzien mniej czyli od:28-04-2008 do 27-04-2009
, czy sie da bez przycisku to zrobić?zeby autmatycznie sie pojawiała "data do" w polu tekstowym obok bez mozliwosci zmiany??

p.s. a jezli tak jak teraz to zeby pierwsza data nie znikała po nacisnieciu ok
Cezar708
hmm a nie można po prostu:
  1. <?php
  2. $data = '26-04-2008';
  3. $pieces = explode("-", $data);
  4.  
  5. $wynik = date("d-m-Y", strtotime($pieces[0]."-".$pieces[1]."-".($pieces[2]+1)) - 60*60*24);
  6.  
  7. echo $wynik;
  8. ?>


questionmark.gif

Pozdrawiam
Cezar708
gosienkami
ale to jak mamy date wklepaną na staałe, a jak data poczatkowa ma byc podawana przez uzytownika w polu tekstowym
PawelC
To w czym widzisz problem? W tym kodzie co podał Cezar zamieniasz tą linie:
plik data.php
  1. <?php
  2. $data = $_POST['data'];
  3. $pieces = explode("-", $data);
  4.  
  5. $wynik = date("d-m-Y", strtotime($pieces[0]."-".$pieces[1]."-".($pieces[2]+1)) - 60*60*24);
  6.  
  7. echo $wynik;
  8. ?>

formularz.html
  1. <form method="POST" action="data.php">
  2. Podaj datę:
  3. <input type="text" name="data">
  4. <input type="submit" value="Oblicz!">
  5. </form>

Datę podajesz w formacie np 25-04-2008
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.