Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα παιδιά!

Λοιπόν, έστω ότι σε μια μεταβλητή $timestamp έχουμε μια ημερομηνία/ώρα ως unix timestamp σε PHP script. Χρειάζομαι μια function ή έστω λίγες σειρές κώδικα php που να δέχεται ως είσοδο την $timestamp και να επιστρέφει το unix timestamp της ημερομηνίας και ώρας που δείχνει, απλά η ώρα να είναι η 00:01.

Θέλουμε δηλαδή ο χρόνος να πηγαίνει - προφανώς - πίσω και να δείχνει 00:01.

 

Για τη σημερινή ημερομηνία και ώρα 00:01 βρήκα στο net ότι βγαίνει μέσω του:

strtotime("today 00:01")

Για μια οποιαδήποτε ημερομηνία και ώρα, που να γυρνάει η ώρα στην ημερομηνία που δείχνει αλλά στις 00:01, πως γίνεται; :-)

Δημοσ.

Καλησπέρα παιδιά!

Λοιπόν, έστω ότι σε μια μεταβλητή $timestamp έχουμε μια ημερομηνία/ώρα ως unix timestamp σε PHP script. Χρειάζομαι μια function ή έστω λίγες σειρές κώδικα php που να δέχεται ως είσοδο την $timestamp και να επιστρέφει το unix timestamp της ημερομηνίας και ώρας που δείχνει, απλά η ώρα να είναι η 00:01.

Θέλουμε δηλαδή ο χρόνος να πηγαίνει - προφανώς - πίσω και να δείχνει 00:01.

 

Για τη σημερινή ημερομηνία και ώρα 00:01 βρήκα στο net ότι βγαίνει μέσω του:

strtotime("today 00:01")

Για μια οποιαδήποτε ημερομηνία και ώρα, που να γυρνάει η ώρα στην ημερομηνία που δείχνει αλλά στις 00:01, πως γίνεται; :-)

date_default_timezone_set('Europe/Athens'); // Δεν είναι απαραίτητο αν η php είναι ρυθμισμένη σωστά

function getTime($timestamp) {
    return strtotime(date('Y-m-d 00:01', $timestamp));
}
  • Like 1
Δημοσ.

Καλησπέρα παιδιά!

Λοιπόν, έστω ότι σε μια μεταβλητή $timestamp έχουμε μια ημερομηνία/ώρα ως unix timestamp σε PHP script.

Διόρθωση: ένα timestamp ΔΕΝ αντιπροσωπεύει ημερομηνία και ώρα, αντιπροσωπεύει μια συγκεκριμένη χρονική στιγμή. Το ποια ημερομηνία και ώρα έχουμε εκείνη τη στιγμή εξαρτάται από το timezone στο οποίο βρισκόμαστε (ή τέλος πάντων χρησιμοποιούμε).

 

Επίσης δεν είναι δεδομένο ότι με το να βάλεις την ώρα δώδεκα και ένα λεπτό θα πάρεις πίσω μικρότερο timestamp από το αρχικό, αν μη τι άλλο συνήθως υπάρχει ένα ολόκληρο λεπτό χρόνου της ίδιας μέρας που έχει μικρότερα timestamps από το αποτέλεσμα που θα πάρεις.

 

Αυτό που θέλεις είναι:

 

$date = DateTime::createFromFormat("U", $timestamp);

$date->setTime(0, 1);

echo $date->getTimestamp();

 

Σε περίπτωση που θέλεις το $timestamp να ερμηνευτεί με άλλο timezone από το server default θα πρέπει να το περάσεις ως παράμετρο, πχ

 

$date = DateTime::createFromFormat("U", $timestamp, DateTimeZone("Europe/Athens"));

 

Προτιμώ αυτή τη μέθοδο από του toot πρώτιστα επειδή δε χρειάζεται να πειράζεις global state (default server timezone) και σε μικρότερο βαθμό επειδή είναι πολύ ευκολότερο να συνεχίσεις με επιπλέον αλλαγές αν χρειαστεί στο μέλλον.

  • Like 3

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...