Δημιουργήστε ένα σενάριο php που καθορίζει την τρέχουσα ώρα. Php εργασία με ημερομηνία - ημερομηνία DateTime mktime και άλλα...

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

Βασική λειτουργία που σχετίζεται με ημερομηνία και ώρα σε PHP, - Αυτό συνάρτηση time()., το οποίο επιστρέφει τον αριθμό των δευτερολέπτων που έχουν περάσει από τότε μεσάνυχτα 01/01/1970(η γέννηση μιας εποχής Unix):

echotime();
?>

Εκτελώντας αυτό το σενάριο, θα μάθετε πόσα δευτερόλεπτα έχουν περάσει από τότε μεσάνυχτα 01/01/1970μέχρι την κλήση συναρτήσεις time().στο σενάριό σου.

Φυσικά, εκτός από αυτή τη βασική λειτουργία, που υπάρχει σε όλες τις γλώσσες προγραμματισμού, όπου μπορείτε εργασία με ημερομηνία και ώρα(τουλάχιστον μεταξύ αυτών που γνωρίζω), υπάρχει μια άλλη συνάρτηση που ονομάζεται getdate():

$datetime = getdate();
foreach ($datetime ως $k=>$v)
ηχώ "$k - $v
";
?>

Εκτελώντας αυτό το σενάριο, θα δείτε ένα σύνολο πλήκτρων στον πίνακα και τις αντίστοιχες τιμές τους (την ίδια στιγμή, επαναλάβαμε την κατασκευή για κάθε). Νομίζω ότι τώρα δεν θα σας είναι δύσκολο να μάθετε δεδομένα σχετικά με ημερομηνία και ώρα. Για παράδειγμα, για να εμφανίσετε την τρέχουσα ώρα, θα γράψετε τον ακόλουθο κώδικα:

$datetime = getdate();
echo $datetime["hours"].":".$datetime["minutes"].":".$datetime["seconds"];
?>

Επίσης στο συναρτήσεις getdate().υπάρχει μια προαιρετική παράμετρος που σημαίνει τον αριθμό των δευτερολέπτων που έχουν περάσει από τότε μεσάνυχτα 01/01/1970. Είναι φτιαγμένο έτσι ώστε αυτή η συνάρτηση να μπορεί να επιστρέψει όχι μόνο την τρέχουσα ώρα και ημερομηνία, αλλά, γενικά, οποιαδήποτε:

$datetime = getdate(152353232);
echo $datetime["year"];
?>

Ως αποτέλεσμα, θα δείτε 1974ηέτος.

Επίσης υπάρχει συνάρτηση date().. Συνιστώ να δείτε την περιγραφή του στην αναφορά, καθώς αυτή η συνάρτηση παίρνει μια πολύ περίπλοκη παράμετρο που ορίζει τη μορφή εξόδου ημερομηνίας. Υπάρχουν λίγο περισσότερα από 30 στοιχεία μορφοποίησης. Και στο παρακάτω παράδειγμα, θα δώσω μερικά από αυτά και θα δούμε τα υπόλοιπα στο βιβλίο αναφοράς, γιατί δεν χρειάζεται να τα απομνημονεύσετε, αλλά είναι πολύ επιθυμητό να εξοικειωθείτε με αυτά. Και είναι επιτακτική ανάγκη να γνωρίζουμε την αρχή της χρήσης τους, και το ακόλουθο παράδειγμα είναι σχετικά:

echo date("Today d.m.Y H:i:s");
?>

Ως αποτέλεσμα, θα δείτε κάτι σαν αυτό: Σήμερα 15/11/2010 21:44:24". Επίσης συναρτήσεις date().Υπάρχει επίσης μια δεύτερη προαιρετική παράμετρος που καθορίζει χρονική σφραγίδα, ακριβώς η τιμή ίση με τον αριθμό των δευτερολέπτων που έχουν περάσει από τότε μεσάνυχτα 01/01/1970. Ένα παράδειγμα χρήσης της δεύτερης παραμέτρου:

echo date ("Once there was d.m.Y H:i:s", 5393235329);
?>

Επίσης υπάρχει συνάρτηση gmdate()., που είναι ένα πλήρες ανάλογο συναρτήσεις date()., Αλλά συνάρτηση gmdate().δείχνει την ώρα όχι σύμφωνα με τη ζώνη ώρας του διακομιστή στον οποίο εκτελείται το σενάριο, αλλά σύμφωνα με Γκρήνουιτς. Προφανώς, με αυτήν τη λειτουργία, πρέπει να αποθηκεύσετε όλες τις πληροφορίες ημερομηνίας και ώρας που βλέπει ο χρήστης και κατά την έξοδο, πρέπει να προσαρμοστείτε στη ζώνη ώρας κάθε χρήστη (ιδανικά, φυσικά):

echo gmdate ("Τώρα στο Greenwich D M j H:i:s T Y")
?>

Ως αποτέλεσμα, θα δείτε κάτι σαν αυτό: Δευτ. 15 Νοεμβρίου 18:52:45 GMT 2010". Φυσικά, θα εμφανιστεί μια διαφορετική ημερομηνία, αλλά σε παρόμοια μορφή. Επίσης, συνιστώ ανεπιφύλακτα να μπείτε στον κατάλογο και απλώς να εξοικειωθείτε με άλλα στοιχεία ημερομηνίας και ώρας στο PHP(Έδωσα μόνο ένα τρίτο), αφού συναρτήσεις date() και gmdate().είναι ο πιο εύκολος και γρήγορος τρόπος λάβετε ημερομηνία και ώρασχεδόν σε οποιαδήποτε μορφή.

Η JavaScript είναι αποκλεισμένη στο πρόγραμμα περιήγησής σας. Να επιτρέπεται η λειτουργία JavaScript για αυτόν τον ιστότοπο!

Αναπαράσταση ημερομηνίας και ώρας

Σε κατανεμημένα συστήματα όπως το Διαδίκτυο, ο χρόνος είναι ουσιαστικός. Λόγω μιας μικρής διαφοράς στο ρολόι του συστήματος, ένας παίκτης Forex μπορεί να χάσει δεκάδες χιλιάδες δολάρια μέσα σε λίγα λεπτά. το σύστημα επιχειρηματικής ευφυΐας θα κάνει λάθος κάνοντας μια πρόβλεψη. Οι διακομιστές NNTP θα χάσουν σημαντικές πληροφορίες που χρειάζεται ο χρήστης κατά τη διαδικασία συγχρονισμού κ.λπ.

Η PHP περιέχει πολλές λειτουργίες για εργασία με ημερομηνίες και ώρες. Τα πιο χρησιμοποιημένα είναι:

  • χρόνος()- επιστρέφει τον τρέχοντα απόλυτο χρόνο. Αυτός ο αριθμός είναι ίσος με τον αριθμό των δευτερολέπτων που έχουν περάσει από τα μεσάνυχτα της 1ης Ιανουαρίου 1970 (από την αρχή της εποχής του UNIX).
  • getdate()- διαβάζει πληροφορίες ημερομηνίας και ώρας. Επιστρέφει έναν συσχετιστικό πίνακα που περιέχει πληροφορίες για τον καθορισμένο χρόνο ή τον τρέχοντα (προεπιλεγμένο) χρόνο. Ο πίνακας περιέχει τα ακόλουθα στοιχεία:

    Παράδειγμα 1

    Χρήση getdate() $val) echo "$key = $val
    "; ηχώ "
    Σήμερα: $d.$d.$d"; ?>

    ΠΑΡΑΔΕΙΓΜΑ 1 ΑΠΟΤΕΛΕΣΜΑ:

    Δευτερόλεπτα = 21 λεπτά = 4 ώρες = 12 μ.μ. = 10 ημερ. = 4 δευτ. = 11 έτος = 2005 ημέρα = 313 εργάσιμες ημέρες = Πέμπτη μήνας = Νοέμβριος 0 = 1131613461 Σήμερα: 10/11/2005

  • ημερομηνία()- Μορφοποίηση ημερομηνίας και ώρας. Ορίσματα: συμβολοσειρά μορφοποίησης και απόλυτος χρόνος. Το δεύτερο όρισμα είναι προαιρετικό. Επιστρέφει μια συμβολοσειρά με τη δεδομένη ή την τρέχουσα ημερομηνία στην καθορισμένη μορφή. Η συμβολοσειρά μορφής μπορεί να περιέχει τους ακόλουθους κωδικούς:
    ένα
    ΕΝΑΠεριλαμβάνεται η ένδειξη "AM" ή "PM".
    ρεΗμέρα του μήνα (01-31)
    ρεΣυντομευμένο όνομα της ημέρας της εβδομάδας (τρία γράμματα)
    φάΌνομα πλήρους μήνα
    σολΏρες (μορφή 12 ωρών χωρίς μηδενικά αρχικά)
    σολΏρες (24ωρη μορφή χωρίς μηδενικά αρχικά)
    ηΡολόι (μορφή 12 ωρών)
    HΡολόι (μορφή 24 ωρών)
    ΕγώΛεπτά (00-59)
    ιΗμέρα του μήνα χωρίς μηδενικά (1-31)
    μεγάλοΠλήρες όνομα της ημέρας της εβδομάδας
    μεγάλοΣημαία δίσεκτου έτους (0 ή 1)
    ΜΜήνας (01-12)
    ΜΣυντομευμένο όνομα του μήνα (τρία γράμματα)
    nΜήνας (1-12)
    μικρόΔευτερόλεπτα (00-59)
    tΑριθμός ημερών σε έναν δεδομένο μήνα (από 28 έως 31)
    UΑπόλυτος χρόνος
    w
    yΈτος (δύο ψηφία)
    ΥΈτος (τέσσερα ψηφία)
    zΗμέρα του χρόνου (0-365)
    ΖΜετατόπιση ζώνης ώρας σε δευτερόλεπτα (-43200 έως 43200)

    Οποιεσδήποτε άλλες πληροφορίες περιλαμβάνονται στη συμβολοσειρά μορφοποίησης θα εισαχθούν στη συμβολοσειρά που επιστρέφεται. Εάν στη συμβολοσειρά μορφοποίησης πρόκειται να προστεθούν χαρακτήρες που είναι οι ίδιοι κωδικοί μορφής, πρέπει να προηγείται μια ανάστροφη κάθετο "\". Οι χαρακτήρες που γίνονται κωδικοί μορφής όταν προσαρτώνται με ανάστροφη κάθετο πρέπει να προηγούνται από δύο κάθετες. Για παράδειγμα, εάν θέλετε να προσθέσετε το "n" σε μια συμβολοσειρά, θα πληκτρολογήσετε "\\n" επειδή το "\n" είναι χαρακτήρας νέας γραμμής.

    Παράδειγμα 2

    Χρήση ημερομηνίας()

    ΠΑΡΑΔΕΙΓΜΑ 2 ΑΠΟΤΕΛΕΣΜΑ:

    Σήμερα: 10.11.05 13:03

  • mktime()- επιστρέφει τον απόλυτο χρόνο, ο οποίος μπορεί στη συνέχεια να χρησιμοποιηθεί με τις συναρτήσεις date() ή getdate(). Λαμβάνει έως και έξι ακέραια ορίσματα με την ακόλουθη σειρά:

    Παρακολουθώ
    λεπτά
    δευτερόλεπτα
    μήνας
    ημέρα του μήνα
    έτος

    Παράδειγμα 3

    Χρήση mktime()

    ΠΑΡΑΔΕΙΓΜΑ 3 ΑΠΟΤΕΛΕΣΜΑ:

  • ημερομηνία ελέγχου ()- έλεγχος της ορθότητας της ημερομηνίας. Επιχειρήματα: μήνας, ημέρα, έτος. Επιστρέφει true εάν η ημερομηνία είναι έγκυρη, π.χ.
    μήνας - ένας ακέραιος αριθμός από 1 έως 12.
    ημέρα - ένας ακέραιος αριθμός που δεν υπερβαίνει τον συνολικό αριθμό ημερών στον συγκεκριμένο μήνα. Ταυτόχρονα, τα δίσεκτα έτη επεξεργάζονται σωστά.
    Το έτος είναι ένας ακέραιος αριθμός από το 1 έως το 32767.

    Για παράδειγμα:

    Εάν (!checkdate($month, 1, $year)) ( $d = getdate(); $month = $d; $year = $d; )

    Προσοχή! Η ημερομηνία μπορεί να βρίσκεται στο έγκυρο εύρος, αλλά άλλες συναρτήσεις ημερομηνίας δεν θα αποδεχτούν αυτήν την τιμή. Έτσι, δεν μπορείτε να χρησιμοποιήσετε το mktime() για χρόνια πριν από το 1902, και θα πρέπει επίσης να το χρησιμοποιήσετε προσεκτικά για χρόνια πριν από το 1970.

  • strftime()- σχηματισμός τοπικής ημερομηνίας και ώρας. Ορίσματα: συμβολοσειρά μορφοποίησης και απόλυτος χρόνος. Το δεύτερο όρισμα είναι προαιρετικό. Επιστρέφει μια συμβολοσειρά με τη δεδομένη ή την τρέχουσα ημερομηνία στην καθορισμένη μορφή. Σε αυτήν την περίπτωση, τα ονόματα των μηνών και των ημερών της εβδομάδας εξάγονται από τις τοπικές ρυθμίσεις που έχουν επιλεγεί χρησιμοποιώντας τη συνάρτηση. Η συμβολοσειρά μορφής μπορεί να περιέχει τους ακόλουθους κωδικούς:
    %έναΣυντομογραφία για την ημέρα της εβδομάδας
    %ΕΝΑΠλήρες όνομα της ημέρας της εβδομάδας
    %σιΣυντομευμένο όνομα μήνα
    %ΣΙΌνομα πλήρους μήνα
    %ντοΠροτιμώμενη μορφή ημερομηνίας και ώρας
    %ΝΤΟΑριθμός αιώνα
    %ρεΗμέρα του μήνα (1-31)
    %ΡΕΤο ίδιο με %m/%d/%y
    %μιΜήνας (1-12)
    %hΤο ίδιο με %σι
    %HΡολόι (μορφή 24 ωρών)
    %ΕΓΩΡολόι (μορφή 12 ωρών)
    %jΗμέρα του χρόνου (0-365)
    Μήνας (1-12)
    λεπτά
    %nΝέα γραμμή χαρακτήρα
    Συμπεριλαμβάνεται το σύμβολο "am" ή "pm".
    %rΏρα με χρήση σημειογραφίας π.μ./μ.μ
    %RΏρα σε μορφή 24 ωρών
    %ΜΙΚΡΟΔευτερόλεπτα (00-59)
    %tΧαρακτήρας καρτέλας
    %TΤο ίδιο με %H:%M:%S
    %uΑριθμός ημέρας της εβδομάδας (1 - Δευτέρα, 7 - Κυριακή)
    %UΑριθμός εβδομάδας. Η αντίστροφη μέτρηση ξεκινά την πρώτη Κυριακή του χρόνου
    %VΑριθμός εβδομάδας σύμφωνα με το ISO 8601:1988. Η πρώτη εβδομάδα πρέπει να έχει τουλάχιστον τέσσερις ημέρες και η Δευτέρα θεωρείται πρώτη μέρα
    %WΑριθμός εβδομάδας. Η αντίστροφη μέτρηση ξεκινά την πρώτη Δευτέρα του χρόνου
    %wΑριθμός ημέρας της εβδομάδας (0 - Κυριακή, 6 - Σάββατο)
    Προτιμώμενη μορφή ημερομηνίας χωρίς ώρα
    Προτιμώμενη μορφή ώρας χωρίς ημερομηνία
    %yΈτος (δύο ψηφία)
    %YΈτος (τέσσερα ψηφία)
    %ZΖώνη ώρας (όνομα ή συντομογραφία)
    %% Σύμβολο "%"

    Οποιεσδήποτε άλλες πληροφορίες περιλαμβάνονται στη συμβολοσειρά μορφοποίησης θα εισαχθούν στη συμβολοσειρά που επιστρέφεται.

Μεταξύ των διαφόρων εργασιών προγραμματισμού, διάφοροι χειρισμοί με τιμές ημερομηνίας και ώρας είναι αρκετά συνηθισμένοι. Ένα σπάνιο αυτοματοποιημένο σύστημα, μια βάση δεδομένων, μπορεί να κάνει χωρίς να αποθηκεύει πληροφορίες σχετικά με το χρόνο μιας συγκεκριμένης διαδικασίας. Εκτός από την απλή προσθήκη μιας ημερομηνίας σε μια εγγραφή βάσης δεδομένων ή την εμφάνιση αυτής της ημερομηνίας, υπάρχουν πολλές εργασίες εμφάνισης αυτών των ημερομηνιών με διάφορες μορφές, έλεγχος εάν η τρέχουσα ώρα ταιριάζει με ένα δεδομένο χρονόμετρο, υπολογισμός της περιόδου μεταξύ δύο ημερομηνιών και πολλά άλλα .

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

Στην PHP, η εργασία με ημερομηνίες συναντά συχνότερα το UNIX TIMESTAMP. Εδώ ο χρόνος αποθηκεύεται ως ακέραιος αριθμός. Ο υπολογισμός του χρόνου αρχίζει την 1η Ιανουαρίου 1970. Επομένως, για παράδειγμα, η ημερομηνία και η ώρα 12/11/2014 7:40:00 μ.μ. θα αντιπροσωπεύεται από τον αριθμό 1418316000. Αυτό το σχήμα δείχνει πόσα δευτερόλεπτα έχουν περάσει από την ημερομηνία μηδέν της 1ης Ιανουαρίου 1970, που ονομάζεται Εποχή Unix .

Ένα παράδειγμα σελίδας php που παρέχει δυνατότητες μετατροπής δεδομένων παρουσιάζεται στον ιστότοπο στην ενότητα προγραμμάτων από το πρόγραμμα "Μετατροπή μορφής ημερομηνίας και ώρας". Εδώ μπορείτε να σχηματίσετε την επιθυμητή ημερομηνία σε μορφή UNIX TIMESTAMP, καθώς και να μεταφέρετε αυτήν τη μορφή σε μια τυπική, αναγνώσιμη από τον άνθρωπο μορφή.

Λήψη της τρέχουσας ώρας και ημερομηνίας στην PHP

Για να λάβετε την τρέχουσα ώρα διακομιστή, χρησιμοποιήστε τη λειτουργία

int time (άκυρο)

το οποίο απλώς θα επιστρέψει την τιμή σε μορφή timestamp unix.

echotime(); // εμφανίζει την τρέχουσα ώρα σε μορφή timestamp unix

Με την πρώτη ματιά, αυτή δεν είναι μια πολύ βολική μορφή για ένα άτομο, αλλά, όπως γνωρίζετε, όσο πιο απλή είναι η αναπαράσταση των δεδομένων, τόσο πιο γρήγορη είναι η επεξεργασία αυτών των τιμών από έναν υπολογιστή. Επίσης, η αποθήκευση ενός αριθμού σε μια βάση δεδομένων είναι πολύ πιο οικονομική από οποιαδήποτε ειδική μορφή. Επίσης, η PHP λειτουργεί με την πάροδο του χρόνου με τον ίδιο τρόπο και στις πλατφόρμες Unix και Windows, γεγονός που καθιστά δυνατή τη χρήση του κώδικα σε οποιαδήποτε από αυτές τις πλατφόρμες.

Μετατροπή μορφής ημερομηνίας PHP

Ο απλούστερος μηχανισμός για τη μετατροπή μιας αριθμητικής τιμής ημερομηνίας σε πιο ευανάγνωστες τιμές παρέχεται από τη συνάρτηση:

array getdate()

Επιστρέφει έναν συσχετιστικό πίνακα που περιέχει πληροφορίες ημερομηνίας. Εάν δεν έχει καθοριστεί η παράμετρος χρονικής σήμανσης, θα επιστραφούν οι τρέχουσες πληροφορίες ώρας. Αυτός ο πίνακας περιέχει τις ακόλουθες τιμές:

Ο πίνακας που προκύπτει σάς επιτρέπει να εμφανίσετε τις τιμές στην επιθυμητή μορφή:

$ημερομηνία = 1418372345;
$date_mas = getdate($date);
echo $date_mas["mday" ] . ". ". $date_mas["mon" ] . ". ". $date_mas["year"]; // 12.12.2014


Μπορείτε επίσης να χρησιμοποιήσετε τη λειτουργία για να μετατρέψετε τη μορφή ημερομηνίας και ώρας:

ημερομηνία συμβολοσειράς (string $template [, int $unix_timestamp])

Έχει σχεδιαστεί για να λαμβάνει την τρέχουσα ημερομηνία unix timestamp στην επιθυμητή μορφή. Η παράμετρος συμβολοσειράς $template καθορίζει τη μορφή εξόδου. Με την παράμετρο $unix_timestamp, μπορείτε να καθορίσετε με ποια τιμή χρόνου θα εργαστείτε. Είναι προαιρετικό, οπότε αν δεν το προσδιορίσετε, θα χρησιμοποιηθεί η τρέχουσα ημερομηνία και ώρα.

Η μορφή δίνεται από τις ακόλουθες τιμές:

ένα"πριν" και "μετά" το μεσημέρι: "πμ" ή "μμ"
ΕΝΑ"πριν" και "μετά" το μεσημέρι με κεφαλαία γράμματα: "ΠΜ" ή "ΜΜ"
ρεημέρα του μήνα με 2 ψηφία (αν είναι λιγότερο από 10, μηδέν πρώτα) (01 έως 31)
ρεημέρα της εβδομάδας με 3 γράμματα. Για παράδειγμα, "Δευτέρα" (Δευτέρα)
ιημέρα του μήνα, 1-2 ψηφία χωρίς αρχικά μηδενικά (από 1 έως 31)
φάόνομα του μήνα. Για παράδειγμα, "Ιανουάριος"
ημορφή ώρας, 12 ωρών (01 έως 12)
Hώρα, 24ωρη μορφή (00 έως 23)
σολώρα, 12ωρη μορφή χωρίς μηδενικά (από 1 έως 12)
σολωριαία, 24ωρη μορφή χωρίς μηδενικά (0 έως 23)
Εγώλεπτά (00 έως 59)
I (κεφαλαίο i)1 εάν ισχύει η θερινή ώρα, 0 διαφορετικά
μεγάλο1 εάν το έτος είναι δίσεκτο ή 0 εάν δεν είναι δίσεκτο
σιώρα σε μορφή Ώρα Διαδικτύου (Εναλλακτική ώρα της ημέρας) (000 έως 999)
Τζώνη ώρας του υπολογιστή. Για παράδειγμα, MDT
l (πεζό L)ημέρα της εβδομάδας. Για παράδειγμα, "Δευτέρα"
Μμήνας, δύο ψηφία με μηδενικά (01 έως 12)
nμήνας, ένα ή δύο ψηφία χωρίς μηδενικά (από 1 έως 12)
Μσυντομευμένο όνομα του μήνα. Για παράδειγμα, "Jan"
tαριθμός ημερών στον καθορισμένο μήνα (από 28 έως 31)
μικρόδευτερόλεπτα (0 έως 59)
μικρόδιγράμματη αγγλική διατακτική κατάληξη ("st", "nd", "rd" ή "th")
Uακέραιος αριθμός δευτερολέπτων από την έναρξη της εποχής του UNIX
yέτος, ψηφιακό, 2 ψηφία (14)
Υέτος, ψηφιακό, 4ψήφιο (2014)
zτακτικός αριθμός της ημέρας του έτους (από 0 έως 365)
Ζμετατόπιση ζώνης ώρας σε δευτερόλεπτα (-43200 έως 43200)
Ντακτικός αριθμός της ημέρας της εβδομάδας από 1 (Δευτέρα) έως 7 (Κυριακή) σύμφωνα με το πρότυπο ISO-8601, (προστέθηκε στην PHP 5.1.0)
wτακτικός αριθμός της ημέρας της εβδομάδας από 0 (Κυριακή) έως 6 (Σάββατο)
Wσειριακός αριθμός της εβδομάδας του έτους σύμφωνα με το πρότυπο ISO-8601· οι εβδομάδες ξεκινούν τη Δευτέρα (προστέθηκε στην PHP 4.1.0)
οαριθμό έτους σύμφωνα με το πρότυπο ISO-8601. Έχει την ίδια σημασία με το Y, εκτός εάν ο αριθμός της εβδομάδας ISO (W) ανήκει στο προηγούμενο ή το επόμενο έτος. τότε θα χρησιμοποιηθεί το έτος εκείνης της εβδομάδας. (προστέθηκε στην PHP 5.1.0)
μικωδικός ζώνης ώρας. Για παράδειγμα: UTC, GMT, Atlantic/Azores (προστέθηκε στην PHP 5.1.0)
Οδιαφορά από τη μέση ώρα του Γκρίνουιτς, σε ώρες. Για παράδειγμα: +0200
Πδιαφορά από τη μέση ώρα του Γκρίνουιτς με άνω και κάτω τελεία μεταξύ ωρών και λεπτών. Για παράδειγμα: +02:00 (προστέθηκε στην PHP 5.1.3)
ντοημερομηνία σε μορφή ISO 8601. Για παράδειγμα, 2014-12-12T15:19:21+00:00 (προστέθηκε σε PHP 5)
rημερομηνία με τη μορφή » RFC 2822. Για παράδειγμα: Πέμ, 21 Δεκεμβρίου 2000 16:01:07 +0200
Uαριθμός δευτερολέπτων από την έναρξη της Unix Epoch (The Unix Epoch, 1 Ιανουαρίου 1970 00:00:00 GMT)

Όπως μπορείτε να δείτε από τη λίστα, μπορείτε να λάβετε πολλά χρήσιμα δεδομένα ημερομηνίας με αυτήν τη λειτουργία. Για παράδειγμα:

$ημερομηνία = 1418372345; // αρχική ημερομηνία και ώρα 12/12/2014 11:19:05

echo date("d.m.Y" , $date); // 12/12/2014 (ημερομηνία)
echo date("H:i:s" , $date); // 11:19:05 (ώρα)
echo date("H:i" , $date); // 11:19 (ώρα)
echo date("t" , $date); // 31 (αριθμός ημερών σε ένα μήνα)
echo date("z" , $date); // 345 (αύξων αριθμός της ημέρας του έτους)
echo date("l dS \of F Y h:i:s A" , $date); // Παρασκευή 12 Δεκεμβρίου 2014 11:19:05 π.μ

Οι άλλοι χαρακτήρες που περιλαμβάνονται στο μοτίβο θα εμφανίζονται όπως είναι στη συμβολοσειρά. Εάν πρέπει να εισαγάγετε έναν χαρακτήρα που χρησιμοποιείται ως κωδικός μορφής στη συνάρτηση, ένας χαρακτήρας "\" εισάγεται μπροστά τους. Για την τιμή "\n" (χαρακτήρας νέας γραμμής), πρέπει να καθοριστεί το "\\n". Έτσι, μπορείτε να εξάγετε ένα ολόκληρο μήνυμα που περιέχει πληροφορίες ημερομηνίας και ώρας:

ημερομηνία ηχούς ( "Σήμερα είναι η z-η ημέρα του Y-ου έτους", $date); // Σήμερα είναι η 345η ημέρα του 2014

Μετατροπή ημερομηνίας και ώρας σε μορφή χρονικής σφραγίδας

Για να αντιστρέψετε μια ημερομηνία από μια τυπική μορφή σε μια αριθμητική τιμή χρονικής σφραγίδας, χρησιμοποιήστε τη συνάρτηση:

int mktime(]]]]]]

Η συνάρτηση mktime() επιστρέφει μια τιμή χρόνου Unix που αντιστοιχεί στην ημερομηνία και την ώρα που δίνονται από τα ορίσματα. Για παράδειγμα:

$my_date = mktime(10, 30, 0, 12, 12, 2014);

Θα πρέπει να προσέχετε τη σειρά των ορισμάτων της συνάρτησης: ώρες, λεπτά, δευτερόλεπτα, μήνας, ημέρα, έτος.

Εκτός από την απλή δημιουργία μιας τιμής ημερομηνίας σε μια χρονική σήμανση, η συνάρτηση mktime() μπορεί να χρησιμοποιηθεί για την εκτέλεση αριθμητικής με ημερομηνίες. Για να το κάνετε αυτό, μπορείτε απλώς να εισαγάγετε τα απαραίτητα ορίσματα. Για παράδειγμα, εάν καθορίσετε τον μήνα 14, τότε στην τελική τιμή, ο μήνας θα είναι ο 2ος και η τιμή του έτους θα αυξηθεί κατά ένα:

$my_day = 12;
$my_month = 12;
$my_year = 2014;

$new_date = mktime(0, 0, 0, $my_month + 5, $my_day, $my_year);

echo date("d.m.Y" , $new_date); // 05/12/2015 (ημερομηνία)

Μπορείτε να κάνετε το ίδιο με άλλες παραμέτρους.

Επικύρωση ημερομηνίας στην PHP

Όταν εργάζεστε με ημερομηνίες, ειδικά όταν διαμορφώνετε μια ημερομηνία χρησιμοποιώντας τη συνάρτηση mktime() που προτείνεται παραπάνω, είναι απαραίτητο να λάβετε υπόψη την ορθότητα της καταχωρημένης ημερομηνίας. Για να γίνει αυτό, η PHP χρησιμοποιεί την ακόλουθη συνάρτηση:

bool check date (int μήνας, int day, int year)

Επιστρέφει true εάν η ημερομηνία που δίνεται από τα ορίσματα είναι σωστή. διαφορετικά επιστρέφει ψευδής. Η ημερομηνία θεωρείται σωστή εάν:

Έτος στην περιοχή από 1 έως 32767.

Μήνας στην περιοχή από 1 έως 12.

Η ημέρα του συγκεκριμένου μήνα, λαμβάνοντας υπόψη το δίσεκτο έτος, είναι σωστή.

Παράδειγμα επικύρωσης ημερομηνίας:

$my_day = 32;
$my_month = 12;
$my_year = 2014;

if (!checkdate($my_month, $my_day, $my_year))
ηχώ "Σφάλμα: Μη έγκυρη ημερομηνία";

Η εργασία με ημερομηνίες και ώρες στην PHP είναι σχετικά εύκολη. Η παρουσία ενός αρκετά μεγάλου αριθμού συναρτήσεων καθιστά τον κώδικα όχι τόσο δυσκίνητο (και στην PHP 5.2 με την έλευση του DateTime και στο 5.3 με την προσθήκη των κλάσεων DateInterval και DatePeriod και ξεχωριστών μεθόδων, η εργασία με ημερομηνίες έχει γίνει ακόμα πιο εύκολη και περισσότερο βολικός). Έτσι, για να δουλέψετε με μια ημερομηνία… Πρώτα, σε κάθε περίπτωση, θα πρέπει να έχετε κατά νου ότι:

  • σχεδόν κάθε ενέργεια μπορεί να γίνει με διάφορους τρόπους.
  • Όλος ο κώδικας είναι γραμμένος για επίδειξη και παραδείγματα εργασίας.
  • όχι πάντα το προτεινόμενο εναλλακτικό αποτέλεσμα μπορεί να είναι κατάλληλο όταν χρησιμοποιείτε μια παλαιότερη έκδοση της PHP (μερικές φορές πιο εύκολη από την επεξεργασία ενός κώδικα εργασίας πριν από πολλά χρόνια).

Στην PHP 5.3 για να δουλεύετε σωστά με ημερομηνίες για να αποφύγετε σφάλματα Strict Standards. Σήμερα, κατά κανόνα, αυτή η κατάσταση λαμβάνεται υπόψη είτε σε σενάρια είτε σε ρυθμίσεις φιλοξενίας.

Η PHP μετατρέπει τη χρονική σήμανση UNIX σε ημερομηνία σε δεδομένη μορφή

Μια από τις πιο εύκολες εργασίες. Συνάρτηση που χρησιμοποιείται: ημερομηνία ($format, $time)
Μεταβιβάζουμε τη μορφή ημερομηνίας ως πρώτη παράμετρο - δείτε την τεκμηρίωση για περισσότερες λεπτομέρειες (για το "γνωστό σε εμάς" 28.02.2012 15:43:59 πρέπει να χρησιμοποιούν:
ημερομηνία ("d.m.Y H:i:s", $time)

PHP πώς να λάβετε αύριο/χθες ημερομηνία

Και εδώ όλα είναι απλά. Χρησιμοποιώντας τη συνάρτηση time(), παίρνουμε την τρέχουσα ώρα σε μορφή Timestamp UNIX. Αφαιρούμε (τη χθεσινή ημερομηνία) ή προσθέτουμε (αύριο) τον απαιτούμενο αριθμό δευτερολέπτων (86400 = 3600 * 24 - σε ημέρες) και παίρνουμε:
$τώρα = χρόνος(); // δεν απαιτείται
$χθες = ώρα()-3600*24;
$αύριο = ώρα()+3600*24;
$weekBefore = time() - 3600*24*7; // πριν από μία εβδομάδα
echo "Yesterday: ",date("d.m.Y", $westerday)"
Αύριο:",date("d.m.Y",$tomorrow);

PHP πώς να λάβετε ημερομηνία με συγκεκριμένη αλλαγή (Χ ημέρες νωρίτερα/μετά)

Μερικές φορές χρειάζεται να γνωρίζετε την ημερομηνία, η οποία θα είναι λίγες ημέρες από την καθορισμένη. Για παράδειγμα, ο χρήστης πλήρωσε για την υπηρεσία στις 11 Φεβρουαρίου 2013 για 3 εβδομάδες. Διαθέσιμες πληροφορίες πληρωμής. Μέχρι ποια ημερομηνία πληρώνεται;

Όταν μπορείτε "απλά" να προσθέσετε μερικές ημέρες και να λάβετε 13 Φεβρουαρίου, η διαδικασία δεν προκαλεί ιδιαίτερες δυσκολίες. Τι γίνεται όμως με τον διαφορετικό αριθμό ημερών σε ένα μήνα; Τι γίνεται με το δίσεκτο έτος; Όλα έχουν ήδη εφευρεθεί πριν από εμάς - για να υπολογίσουμε την ημερομηνία από ένα γνωστό διάστημα, θα χρησιμοποιήσουμε το mktime

$payment = array("day"=>11,"month"=>2,"year"=>2013);
$toDate = mktime(0,0,0,$payment["month"],$payment["day"]+3*7,$payment["year"]);
echo date("d.m.Y",$toDate); // συμπέρασμα
// σε PHP > 5.3 χρησιμοποιώντας DateInterval
date_default_timezone_set("Ευρώπη/Μόσχα");
$datetime = νέα DateTime(ημερομηνία());
$datetime->sub(new DateInterval("P7D")); // μείον 7 ημέρες

PHP πώς να υπολογίσετε τη διαφορά μεταξύ ημερομηνιών

Φαίνεται μια απλή κατάσταση - υπάρχουν δύο ημερομηνίες, μετρήστε τον αριθμό των ημερών (μήνες και ημέρες) μεταξύ τους. Ωστόσο, η "χειροκίνητη" υλοποίηση θα πάρει λίγο χρόνο και υπάρχει πιθανότητα να χάσετε κάτι (για αθλητικό ενδιαφέρον - όσοι θέλουν να δοκιμάσουν μπορούν να αφήσουν τον κωδικό στα σχόλια). Η PHP έχει μια ενσωματωμένη συνάρτηση date_diff για τον υπολογισμό της διαφοράς μεταξύ ημερομηνιών ή ακριβέστερα Datetime::diff
$datetime1 = new DateTime("2013-05-01");
$datetime2 = new DateTime("2013-01-01");
$interval = $datetime1->diff($datetime2);
echo $interval->format("%R%a ημέρες μετά την Πρωτοχρονιά");

Η PHP μετατρέπει DDD ημέρες σε X έτη Y μήνες Z έτη

Μερικές φορές θέλετε να εμφανίσετε την ώρα μετά από ένα συγκεκριμένο συμβάν. Για παράδειγμα, αφού περάσει η εγγραφή. Για ευκολία (3200 ημέρες λένε λίγα), οι αντιλήψεις μπορούν να μεταφραστούν σε χρόνια και μήνες χρησιμοποιώντας τη μορφοποίηση DateInterval::format
$registerDate = new DateTime("2009-03-03");
$σήμερα = νέα DateTime();
$interval = $today->diff($registerDate);
echo "Από τη στιγμή της εγγραφής πέρασε: ";
echo $interval->format("%a days")."\n"; // συνολικός αριθμός ημερών
ηχώ "ή"?
echo $interval->format("%m μήνες, %d ημέρες"); // μήνες, ημέρες

Μετάφραση PHP από ημερομηνία σε χρονική σήμανση - ανάλυση ημερομηνίας σε ρωσική μορφή

Μερικές φορές απαιτείται η μετατροπή μιας ημερομηνίας σε αναγνώσιμη μορφή στη μορφή UNIX TIMESTAMP. Για να αναλύσετε μια ημερομηνία με τη μορφή '2013-05-30 12:35' σε στοιχεία (να λάβετε ξεχωριστά το έτος, μήνα, ημέρα), μπορείτε χρησιμοποιήστε τη συνάρτηση date_parse. Για να μεταφράσετε απευθείας σε unix timestamp - μπορείτε να χρησιμοποιήσετε το strtotime (καθώς και παραλλαγές όπως "τώρα", "+1 ημέρα", "επόμενη Πέμπτη" - php.net/manual/en/datetime.formats.php):
echo strtotime("30-05-2013");
print_r(date_parse("2013-05-30 12:35"));

Ωστόσο, για τη Ρωσία, η πιο γνωστή μορφή είναι ΗΗ.ΜΜ.ΕΕΕΕ. Μπορείτε, φυσικά, να διαχωρίσετε την ημερομηνία με τον χαρακτήρα κουκκίδας, να λάβετε την ημέρα, τον μήνα, το έτος και να χρησιμοποιήσετε τη συνάρτηση mktime για να μάθετε την αντίστοιχη τιμή UNIX TIMESTAMP. Η PHP5.3 εισήγαγε τη συνάρτηση date_parse_from_format, στην οποία μπορεί να περάσει μια συμβολοσειρά μορφής. Και για το PHP5.2, χρησιμοποίησα το strptime (το οποίο, όπως αποδείχθηκε, δεν το γνωρίζουν όλοι, ίσως επειδή απλά δεν εφαρμόζεται για Windows: Αυτή η λειτουργία δεν εφαρμόζεται σε πλατφόρμες Windows):

$date = "30/05/2013 12:35 μ.μ.";
$format = "d.m.Y H:i";
print_r(date_parse_from_format($format,$date));
// εναλλακτική για PHP5.2
$format = "%d.%m.%Y %H:%M"; // διαφορετικό από αυτό που χρησιμοποιείται στη συνάρτηση ημερομηνίας
$d = strptime($date, $format);
$newDate = mktime($d["tm_hour"], $d["tm_min"], $d["tm_sec"],
$d["tm_mon"]+1, $d["tm_mday"], $d["tm_year"]+1900); // tm_mon 0-11, tm_year 1900
echo $newDate;

Επιπλέον, η συνάρτηση strptime έχει κάποιες ιδιαιτερότητες - ο μήνας μετατοπίζεται κατά ένα (Ιανουάριος - 0), και το έτος είναι ο αριθμός των ετών από το 1900, δηλ. για το 2013 $d['tm_year'] θα είναι 113.

Σύνδεσμοι και χρήσιμες πληροφορίες:
PHP dateTime συναρτήσεις http://www.php.net/manual/en/ref.datetime.php - συναρτήσεις datetime
Κατηγορία PHP DateTime http://www.php.net/manual/en/class.datetime.php
PHP date_diff http://www.php.net/manual/en/function.date-diff.php
PHP strftime http://ru2.php.net/manual/en/function.strftime.php
PHP date_parse_from_format http://ru2.php.net/manual/en/function.date-parse-from-format.php



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο προς αποστολή στους συντάκτες μας: