Welcome,
Guest
.
Please
login
or
register
.
Did you miss your
activation email
?
News:
Elxis 5.5 Calypso supports 2 factor authentication login with e-mail or SMS.
Home
Help
Login
Register
Elxis CMS Forum
»
Ελληνικό Forum
»
Γενικά Θέματα για το Elxis CMS
(Moderators:
CREATIVE Options
,
akalant
) »
Σύγκριση ημ. δημιουργίας και ημ. επεξεργασίας
« previous
next »
Print
Pages: [
1
]
Author
Topic: Σύγκριση ημ. δημιουργίας και ημ. επεξεργασίας (Read 4020 times)
michalis1984
Sr. Member
Posts: 334
Σύγκριση ημ. δημιουργίας και ημ. επεξεργασίας
«
on:
February 01, 2014, 16:13:04 »
Σε ένα content plugin θα ήθελα να εμφανίζεται κάτι μόνο όταν η ημερομηνία επεξεργασίας είναι μεγαλύτερη απο μια συγκεκριμένη (σταθερή) περίοδο σε σύγκριση με την ημερομηνία δημιουργίας.
Ας υποθέσουμε ότι θέλουμε να γίνεται αυτό όταν η ημερομηνία επεξεργασίας είναι 3 μέρες+ απο την ημερομηνία δημιουργίας κάποιου άρθρου.
Παίρνουμε τις 2 ημερομηνίες
eFactory::getDate()->formatDate($article->created, $eLang->get($date_format_long));
eFactory::getDate()->formatDate($article->modified, $eLang->get($date_format_long))
Πως όμως θα τις συγκρίνουμε;
Στα πλαίσια δοκιμής έχω κάνει απλή αφαίρεση μεταξύ των δύο και δεν δούλεψε αφού συγκρίνει μόνο το πρώτο ψηφίο.
δηλ. 24/5/2010 - 20/3/2000 με αφαίρεση μας δίνει 24-20=4
Μήπως ξέρετε πως μπορώ να κάνω σωστά τη σύγκριση;
Επίσης με τον ίδιο τρόπο θα μπορούσα να συγκρίνω την τρέχουσα ημερομηνία, με την ημερομηνία δημοσίευσης για να εμφανίζω πχ. ένα σύμβολο "new" για όλα τα άρθρα που έχουν δημισθευτεί τις τελευταίες 24 ώρες.
«
Last Edit: February 01, 2014, 16:19:52 by michalis1984
»
Logged
datahell
Elxis Team
Hero Member
Posts: 10356
Re: Σύγκριση ημ. δημιουργίας και ημ. επεξεργασίας
«
Reply #1 on:
February 01, 2014, 21:31:26 »
Θα πρέπει να
συγκρίνεις τις ημερομηνίες πρωτού τις μορφοποιήσεις
. Η μορφοποιημένη ημερομηνία θα πρέπει να χρησιμοποιείται ΜΟΝΟ για εμφάνιση στον χρήστη, όχι για υπολογισμούς.
Το Elxis αποθηκεύει τις ημερομηνίες στα άρθρα σε στάνταρ μορφή
YYYY-mm-dd hh:ii:ss
και ΠΑΝΤΑ στη χρονική ζώνη
GMT
. Ο πιο εύκολος και απροβλημάτιστός τρόπος να συγκρίνεις δύο τέτοιες ημερομηνίες είναι να τις μετατρέψεις σε timestamp με την συνάρτηση strtotime.
Προσοχή:
αν ένα άρθρο δεν έχει τροποιηθεί ποτέ η ημερομηνία τροποποίησης είναι η
1970-01-01 00:00:00
, εσύ πρέπει να αποκλείσεις αυτά τα άρθρα.
Ας υποθέσουμε ότι θες η διαφορά τους να είναι το λιγότερο 3 ημέρες, αυτό μεταφράζεται σε
259200
δευτερόλεπτα (3 x 86400).
$modified_more = false;
if ($row->modified != '1970-01-01 00:00:00') {
$dt = strtotime($row->modified) - strtotime($row->created);
if ($dt >= 259200) { $modified_more = true; }
}
Φαντάζομαι κατανοείς ότι το παραπάνω δεν σου δίνει τα νέα ή τα παλιά άρθρα αλλά μόνο όσα μεταξύ της ημερομηνίας δημιουργίας και τροποιήσης μεσολαβούν τουλάχιστον 3 ημέρες (
δεν βλέπω που μπορεί να είναι χρήσιμο αυτό...
)
Το τρέχον timestamp το παίρνεις έτσι:
$ts = time();
ή έτσι:
$eDate = eFactory::getDate();
$ts = $eDate->getTS();
Για μορφοποίηση ενός timestamp και εμφάνιση στον χρήστη στην επιλεγμένη ζώνη ώρας του:
$eDate->formatTS($ts);
Αν θες να αλλάξεις την default μορφοποίηση έχεις 13 επιλογές (DATE_FORMAT_1 ως DATE_FORMAT_13
- δες τα κύρια αρχεία γλώσσας
):
$eDate->formatTS($ts, $eLang->get('DATE_FORMAT_4'));
Αν θες να εμφανίσεις την ημερομηνία όχι στην ζώνη ώρας του χρήστη αλλά σε αυτή του συστήματος (GMT):
$eDate->formatTS($ts, $eLang->get('DATE_FORMAT_4'), false);
Αν θες να πάρεις τα νέα άρθρα θα δουλέψεις μόνο με την ημερομηνία created. Σε αυτή την περίπτωση δεν χρειάζεται να κάνεις κάποιο υπολογισμό. Απλά στο query προς την database κάνε φθίνουσα ταξινόμηση κατά ημερομηνία δημιουργίας (ORDER BY created DESC).
Η βιβλιοθήκη
elxisDate
έχει πολλές βοηθητικές συναρτήσεις, άνοιξέ την και δες την.
includes/libraries/elxis/date.class.php
«
Last Edit: February 01, 2014, 21:56:33 by datahell
»
Logged
Elxis Team
|
Is Open Source
|
IOS Rentals | IOS AERO
michalis1984
Sr. Member
Posts: 334
Re: Σύγκριση ημ. δημιουργίας και ημ. επεξεργασίας
«
Reply #2 on:
February 01, 2014, 23:08:43 »
Πολύ επεξηγηματικός όπως πάντα. Με βοήθησες αρκετά datahell.
Σε ευχαριστώ.
Logged
Print
Pages: [
1
]
« previous
next »
Elxis CMS Forum
»
Ελληνικό Forum
»
Γενικά Θέματα για το Elxis CMS
(Moderators:
CREATIVE Options
,
akalant
) »
Σύγκριση ημ. δημιουργίας και ημ. επεξεργασίας