Localtime: Πώς να πείτε την τρέχουσα ώρα στο Perl

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

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

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

instagram viewer

#! / usr / local / bin / perl
@timeData = τοπική ώρα (ώρα);
εκτύπωση συνδέστε ('', @timeData);

Θα πρέπει να δείτε κάτι παρόμοιο με αυτό, αν και ο αριθμός μπορεί να είναι πολύ διαφορετικός.

20 36 8 27 11 105 2 360 0

Αυτά τα στοιχεία της τρέχουσας ώρας είναι, προκειμένου:

  • Δευτερόλεπτα μετά το λεπτό
  • Λεπτά μετά από την ώρα
  • Ώρες μετά τα μεσάνυχτα
  • Ημέρα του μήνα
  • Μήνες μετά την έναρξη του έτους
  • Αριθμός ετών από το 1900
  • Αριθμός ημερών από την αρχή της εβδομάδας (Κυριακή)
  • Αριθμός ημερών από την αρχή του έτους
  • Ναί ή όχι θερινή ώρα είναι ενεργό

Έτσι, αν επιστρέψουμε στο παράδειγμα και προσπαθήσουμε να το διαβάσουμε, θα δείτε ότι είναι 8:36:20 π.μ. στις 27 Δεκεμβρίου 2005, είναι 2 ημέρες την περασμένη Κυριακή (Τρίτη) και είναι 360 ημέρες από την έναρξη του έτος. Ο χρόνος θερινής ώρας δεν είναι ενεργός.

Κάνοντας το Perl Localtime Readable

Μερικά από τα στοιχεία του πίνακα που επιστρέφει τοπικά είναι λίγο δύσκολο να διαβαστούν. Ποιος θα σκεφτόταν το τρέχον έτος όσον αφορά τον αριθμό των ετών που πέρασαν το 1900; Ας ρίξουμε μια ματιά σε ένα παράδειγμα που καθιστά σαφέστερη την ημερομηνία και το χρόνο μας.

 #! / usr / local / bin / perl

 @months = qw (Ιαν Φεβ Μαρ Απρ Μαϊ Ιουν Ιουλ Αυγ Σεπ Οκτ Νοε Δεκ);

 @weekDays = qw (Κυρ Δευ Τρι Τετ Πεμ Παρ Σαβ Κυρ);

 ($ δευτερόλεπτα, $ λεπτό, $ ώρα, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();

 $ έτος = 1900 + $ yearOffset;

 $ theTime = "$ hour: $ λεπτό: $ δευτερόλεπτο, $ εβδομάδαμέρες [$ dayOfWeek] $ μήνες [$ μήνα] $ dayOfMonth, $ έτος";

 print $ thetime; 

Όταν εκτελείτε το πρόγραμμα, θα πρέπει να δείτε μια πολύ πιο ευανάγνωστη ημερομηνία και ώρα όπως αυτό:

 9:14:42, Τετ 28 Δεκεμβρίου 2005 

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

 @months = qw (Ιαν Φεβ Μαρ Απρ Μαϊ Ιουν Ιουλ Αυγ Σεπ Οκτ Νοε Δεκ);

 @weekDays = qw (Κυρ Δευ Τρι Τετ Πεμ Παρ Σαβ Κυρ); 

Δεδομένου ότι η τοπική συνάρτηση επιστρέφει αυτά τα στοιχεία σε τιμές που κυμαίνονται από 0-11 και 0-6 αντίστοιχα, είναι τέλειοι υποψήφιοι για έναν πίνακα. Η τιμή που επιστρέφεται από την τοπική ώρα μπορεί να χρησιμοποιηθεί ως αριθμητική διεύθυνση για την πρόσβαση στο σωστό στοιχείο του πίνακα.

 $ μήνες [$ μήνα] $ εβδομάδαΠροσφορές [$ dayOfWeek]


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

 ($ δευτερόλεπτα, $ λεπτό, $ ώρα, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();


Πρέπει επίσης να προσαρμόσουμε την αξία του έτους. Θυμηθείτε ότι η τοπική ώρα επιστρέφει τον αριθμό των ετών από το 1900, οπότε για να βρούμε το τρέχον έτος, θα πρέπει να προσθέσουμε 1900 στην αξία που μας δίνεται.

 $ έτος = 1900 + $ yearOffset;

Πώς να πείτε την τρέχουσα ώρα GM στο Perl

Ας πούμε ότι θέλετε να αποφύγετε όλες τις πιθανές συγχύσεις ζώνης ώρας και να πάρετε τον έλεγχο της αντιστάθμισης τον εαυτό σας. Η λήψη της τρέχουσας ώρας στην τοπική ώρα θα επιστρέφει πάντα μια τιμή που βασίζεται στις ρυθμίσεις ζώνης ώρας του μηχανήματος - σε ένα διακομιστή στο οι ΗΠΑ θα επιστρέψουν μία φορά, ενώ ένας διακομιστής στην Αυστραλία θα επιστρέψει μία σχεδόν ολόκληρη ημέρα διαφορετική λόγω της ζώνης ώρας διαφορές.

Το Perl διαθέτει μια δεύτερη εύχρηστη λειτουργία εντοπισμού χρόνου που λειτουργεί με τον ίδιο ακριβώς τρόπο όπως το τοπικό, αλλά αντί να επιστρέφει το χρόνο που έχει καθοριστεί για το μηχάνημά σας ζώνη ώρας, επιστρέφει Συντονισμένη παγκόσμια ώρα (συντομογραφία UTC, επίσης αποκαλούμενη Μέσος χρόνος Greenwich ή GMT). Απλά αρκεί η λειτουργία που καλείται gmtime.

 #! / usr / local / bin / perl

 @timeData = gmtime (ώρα);

 εκτύπωση συνδέστε ('', @timeData); 

Εκτός από το γεγονός ότι ο χρόνος που επιστρέφεται θα είναι ο ίδιος σε κάθε μηχάνημα και σε GMT, δεν υπάρχει διαφορά μεταξύ των λειτουργιών gmtime και localtime. Όλα τα δεδομένα και οι μετατροπές γίνονται με τον ίδιο τρόπο.

 #! / usr / local / bin / perl

 @months = qw (Ιαν Φεβ Μαρ Απρ Μαϊ Ιουν Ιουλ Αυγ Σεπ Οκτ Νοε Δεκ);

 @weekDays = qw (Κυρ Δευ Τρι Τετ Πεμ Παρ Σαβ Κυρ);

 ($ δευτερόλεπτο, $ λεπτό, $ ώρα, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();

 $ έτος = 1900 + $ yearOffset;

 $ theGMTime = "$ hour: $ λεπτό: $ δευτερόλεπτο, $ εβδομάδαμέρες [$ dayOfWeek] $ μήνες [$ μήνα] $ dayOfMonth, $ έτος";

 εκτύπωση $ theGMTime; 

  1. localtime θα επιστρέψει την τρέχουσα τοπική ώρα στο μηχάνημα που εκτελεί το σενάριο.
  2. Το gmtime θα επιστρέψει την καθολική μέση ώρα Greenwich, ή GMT (ή UTC).
  3. Οι τιμές επιστροφής μπορεί να μην είναι ακριβώς αυτό που περιμένετε, οπότε βεβαιωθείτε ότι έχετε τις μετατρέψει όπως είναι απαραίτητο.
instagram story viewer