Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] mktime - wyświetlanie tylko samego roku
Forum PHP.pl > Forum > Przedszkole
proton
Witam

Jak za pomocą funkcji mktime ustalić tylko sam rok?
Otóż mam spis rzeczy i przy każdej rzeczy jest data powstania tylko że przy niektórych jest podany dzień, miesiąc, rok a przy innych sam rok lub sam miesiąc i rok. I teraz jak za pomocą mktime wyślę date która posiada dzien, miesiac, rok to jest dobrze ale jak już wysle sam miesiac i rok bądz tylko rok to zapisuje sie inna data niz ja chce. I jak teraz zrobić aby data z samym rokiem też się zapisywała dobrze? A potrzebuje mktime bo potem te daty musze porównywać, np. wypisać 10 pierwszych rzeczy wg roku, miesiaca, dnia i mogę to zrobić tylko przy pomocy mktime() i date(), no chyba że jest inne rozwiązanie.

Pozdrawiam
wookieb
Cytat(proton @ 21.11.2008, 23:30:34 ) *
I teraz jak za pomocą mktime wyślę date która posiada dzien, miesiac, rok to jest dobrze ale jak już wysle sam miesiac i rok bądz tylko rok to zapisuje sie inna data niz ja chce. I jak teraz zrobić aby data z samym rokiem też się zapisywała dobrze?

Dobrze tzn? I co tzn "jak ty chcesz" bo nie precyzujesz.
pyro
troche kiepsko sprecyzowane, podaj jakis kod albo co...
proton
Mam 2 rzeczy w bazie danych i do jednej jak przypisze date dajmy 12-02-2002 to przy użyciu później funkcji date() data poprawnie mi się wyświetli czyli 12-02-2002 ale jak dajmy do drugiej rzeczy przypisze date 2009 to przy użyciu funkcji date() dostane albo rok 1997 albo jakiś inny. A to kod z przykładem:

  1. <?php
  2. $rzecz1 = mktime (0,0,0,2,2,1997);
  3. echo date ("M-d-Y", $rzecz1);
  4. ?>


Tu będzie ok.

  1. <?php
  2. $rzecz2 = mktime (0,0,0,0,0,2002);
  3. echo date ("M-d-Y", $rzecz2);
  4. ?>


A tu będzie źle.

Co prawda w tych przykładach daty nie wysyłam do bazy ale bład polega w tym fragmencie.
bregovic
Ale nie możesz mieć timestampa bez daty pełnej daty. Timestamp to liczba sekund między tak zwaną epoką unixową, czyli 1szym stycznia 1970 a datą. Czyli samego roku nie wyrazisz przy pomocy sekund. Możesz za to wyrazić np 1szego stycznia danego roku, czyli:
  1. <?php
  2. mktime(0, 0, 0, 1, 1, 2002)
  3. ?>

Nie mogę się nie zapytać, skoro chcesz zapisać tylko rok, czemu nie zapisujesz tylko roku? winksmiley.jpg
proton
Jeśli bym to zapisywał jako zwykłe pole to potem bym nie mógł porównać daty np. 12.12.2002 z datą 2009. Jedyne rozwiązanie jakie widze to do jednej rzeczy przypisać trzy znmienne czyli coś w stylu:

  1. <?php
  2. $rzecz1 = $dzien.$miesiac.$rok;
  3. ?>
bregovic
Ale jeśli masz tylko rok, to i tak nie możesz tego porównać... Poza tym przyjrzyj się DATETIME w mysql'u, może ci pomoże.
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.