Έλεγχος με ημερομηνίες

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1952
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Έλεγχος με ημερομηνίες

Δημοσίευση από vassilism » 28 Απρ 2009 02:34

Παιδιά καλησπέρα.
Προσπαθώ να κάνω έλεγχο για το αν μια ημερομηνία είναι μεγαλύτερη ή μικρότερη κάποιας άλλης και δεν τα καταφέρνω.

Η ημερομηνία είναι της μορφής:
28/04/2009 δηλαδή d/m/Y

Αν πάω να συγκρίνω 2 ημερομηνίες όπως κάνω παρακάτω, παρατηρώ πως συγκρίνει μόνο τα 2 πρώτα ψηφία (δηλαδή την ημέρα).

Κώδικας: Επιλογή όλων

$simera = '28/04/2009';
$tonallomina = '30/05/2009';

if($simera > $tonallomina)
echo '1';
else 
echo '0';
Άραγε υπάρχει κάποιος εύκολος τρόπος να κάνω έλεγχο στις ημερομηνίες που είναι της μορφής d/m/Y? :think:

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Έλεγχος με ημερομηνίες

Δημοσίευση από fafos » 28 Απρ 2009 06:25

vassilism έγραψε:Παιδιά καλησπέρα.
Προσπαθώ να κάνω έλεγχο για το αν μια ημερομηνία είναι μεγαλύτερη ή μικρότερη κάποιας άλλης και δεν τα καταφέρνω.

Η ημερομηνία είναι της μορφής:
28/04/2009 δηλαδή d/m/Y

Αν πάω να συγκρίνω 2 ημερομηνίες όπως κάνω παρακάτω, παρατηρώ πως συγκρίνει μόνο τα 2 πρώτα ψηφία (δηλαδή την ημέρα).

Κώδικας: Επιλογή όλων

$simera = '28/04/2009';
$tonallomina = '30/05/2009';

if($simera > $tonallomina)
echo '1';
else 
echo '0';
Άραγε υπάρχει κάποιος εύκολος τρόπος να κάνω έλεγχο στις ημερομηνίες που είναι της μορφής d/m/Y? :think:

fertes t'anaskela re sy patrida :lol:

Κώδικας: Επιλογή όλων

$simera = explode( '/', '28/04/2009');
$simera = $simera[2].$simera[1].$simera[0]; 
$tonallomina = explode( '/', '30/05/2009');
$tonallomina = $tonallomina[2].$tonallomina[1].$tonallomina[0]; 
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Έλεγχος με ημερομηνίες

Δημοσίευση από Banavas » 28 Απρ 2009 23:20

Για απλή σύγκριση είναι καλή η μέθοδος του fafou.
Αν θέλεις όμως να κάνεις τίποτε περισσότερο (δηλαδή να κάνεις πράξεις με τις ημερομηνίες) όπως για παράδειγμα να βρείς την διαφορά τους, τότε είναι καλύτερα να τις μετατρέψεις σε timestamp με την mktime.

Επίσης μπορείς να κρατάς στη βάση το timestamp και να κάνεις απ'ευθείας συγκρίσεις ή πράξεις χωρίς μετατροπές. Αν θες να εμφανίσεις το αποτέλεσμα σε ανθρώπινη ημερομηνία το μετατρέπεις με την date("date_pattern", timestamp)
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1952
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Έλεγχος με ημερομηνίες

Δημοσίευση από vassilism » 29 Απρ 2009 00:03

fafos έγραψε:fertes t'anaskela re sy patrida :lol:
Χαχαχα πατρίδα άπαιχτος!!!
Στην ουσία έβγαλες τα / και τις γύρισες ανάποδα, έτσι δημιουργήθηκε ένας αριθμός που στην συνέχεια τον συγκρίνεις άνετα.
Πολύ καλό!!!

ps: Πριν ήμουν για καφεδάκι στο χωριό σου :D
Banavas έγραψε:Για απλή σύγκριση είναι καλή η μέθοδος του fafou.
Αν θέλεις όμως να κάνεις τίποτε περισσότερο (δηλαδή να κάνεις πράξεις με τις ημερομηνίες) όπως για παράδειγμα να βρείς την διαφορά τους, τότε είναι καλύτερα να τις μετατρέψεις σε timestamp με την mktime.

Επίσης μπορείς να κρατάς στη βάση το timestamp και να κάνεις απ'ευθείας συγκρίσεις ή πράξεις χωρίς μετατροπές. Αν θες να εμφανίσεις το αποτέλεσμα σε ανθρώπινη ημερομηνία το μετατρέπεις με την date("date_pattern", timestamp)
Μάρκο καιρό είχαμε να σε δούμε, που χάθηκες τελευταία? :D

Με timestamp δεν έχω ασχοληθεί καθόλου, αλλά αν δεν κάνω λάθος δεν περιορίζετε ανάμεσα σε κάποιες ημερομηνίες?

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Έλεγχος με ημερομηνίες

Δημοσίευση από Banavas » 29 Απρ 2009 09:00

vassilism έγραψε:
Μάρκο καιρό είχαμε να σε δούμε, που χάθηκες τελευταία? :D

Με timestamp δεν έχω ασχοληθεί καθόλου, αλλά αν δεν κάνω λάθος δεν περιορίζετε ανάμεσα σε κάποιες ημερομηνίες?
Πλάκωσε πολύ δουλειά τελευταία. Παρακολουθώ το forum αλλά απαντάω λιγότερο γιατί είναι χρονοβόρο. Άσε που με προλαβαίνει πάντα ο fafos :-? :D

Υπάρχουν κάποια προβλήματα με το timestamb αλλά αν θέλεις να βρεις πόσες μέρες απέχουν δύο ημερομηνίες, είναι πολύ καλό γιατί δεν χρειάζεται να ψάξεις τίποτα ούτε πόσες μέρες έχει ο μήνας ούτε αν είναι δίσεκτο έτος κλπ. Αφαιρείς το ένα timestamb από το άλλο και έχεις τις μέρες που μεσολάβησαν σε δευτερόλεπτα διαιρείς δια (60*60*24) το στρογγυλεύεις γιατί υπάρχει ένα προβληματάκι με την θερινή ώρα και έχεις το αποτέλεσμα.

Όλα τα στοιχεία που μαs δίνει η date("pattern") ανάλογα με το pattern που θα βάλουμε, μπορούμε να τα πάρουμε για άλλη ημερομηνία με τον συνδυασμό timestamb και date. date("pattern",timestamp)
Happy coding....
Μάρκος
http://lasernet.gr

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες