Μετατροπέας Χρονικής Σήμανσης UNIX | Μετατροπή Online

Τρέχουσα χρονική σήμανση UNIX

Δευτερόλεπτα
Χιλιοστά του δευτερολέπτου

Χρονική σήμανση → Ημερομηνία & ώρα


Ημερομηνία & ώρα → Χρονική σήμανση

Μετατροπέας Χρονικής Σήμανσης UNIX (online μετατροπέας UNIX χρόνου)

Αυτός ο μετατροπέας χρονικής σήμανσης UNIX σας επιτρέπει να μετατρέψετε γρήγορα τον χρόνο UNIX (epoch time / POSIX time) σε ημερομηνία και ώρα και αντίστροφα. Υποστηρίζει χρονική σήμανση σε δευτερόλεπτα και χιλιοστά του δευτερολέπτου, εμφανίζει την τοπική ώρα, την UTC καθώς και την ISO 8601, και τα αποτελέσματα μπορούν να αντιγραφούν με ένα κλικ.


Τι είναι η χρονική σήμανση UNIX (epoch time / POSIX time);

Η χρονική σήμανση UNIX είναι ένας αριθμός που εκφράζει τον χρόνο ως τον αριθμό δευτερολέπτων από την 1η Ιανουαρίου 1970 00:00:00 UTC (γνωστή ως UNIX epoch). Στην πράξη, είναι ένα από τα πιο συχνά χρησιμοποιούμενα μορφότυπα για την αποθήκευση και τη μεταφορά ημερομηνίας και ώρας σε συστήματα, βάσεις δεδομένων, API και καταγραφή συμβάντων.

Παράδειγμα: Το 1700000000 αντιστοιχεί στην ημερομηνία 14 Νοεμβρίου 2023 22:13:20 UTC.

Γιατί ακριβώς 1η Ιανουαρίου 1970;

Η αρχή της εποχής (1970-01-01) επιλέχθηκε κατά τον σχεδιασμό του UNIX ως ένα πρακτικό σημείο αναφοράς: είναι κοντά στην περίοδο δημιουργίας του συστήματος και επιτρέπει απλούς υπολογισμούς χρόνου.


Χρονική σήμανση UNIX σε δευτερόλεπτα έναντι χιλιοστών του δευτερολέπτου

Η χρονική σήμανση UNIX εμφανίζεται συνήθως σε δύο μορφές:

Μορφή χρονικής σήμανσηςΠαράδειγμαΤυπική χρήση
Δευτερόλεπτα (δ)1700000000βάσεις δεδομένων, backend, API, αρχεία
Χιλιοστά (χδ)1700000000000JavaScript (Date.now()), ανάλυση, λεπτομερή αρχεία καταγραφής

Πώς να αναγνωρίσετε τι έχετε;

  • Τα δευτερόλεπτα για τις „σημερινές“ ημερομηνίες έχουν συνήθως 10 ψηφία.
  • Τα χιλιοστά του δευτερολέπτου έχουν συνήθως 13 ψηφία και είναι περίπου 1000 φορές μεγαλύτερα.
  • Ενδεικτικά: εάν η τιμή είναι > 10¹², σχεδόν σίγουρα πρόκειται για χιλιοστά του δευτερολέπτου.

Πώς να χρησιμοποιήσετε τον μετατροπέα χρονικής σήμανσης UNIX

1) Χρονική σήμανση → Ημερομηνία & ώρα

  1. Εισαγάγετε την χρονική σήμανση UNIX στο πεδίο, ή κάντε κλικ στο Τώρα (τρέχων χρόνος UNIX).
  2. Εάν η χρονική σήμανση είναι σε χιλιοστά του δευτερολέπτου, ενεργοποιήστε την επιλογή Χιλιοστά του δευτερολέπτου.
  3. Κάντε κλικ στο Μετατροπή (ή πατήστε Enter).
  4. Θα εμφανιστεί η μετατροπή σε τοπική ώρα, UTC και ISO 8601.
  5. Κάνοντας κλικ στο αποτέλεσμα, θα το αντιγράψετε στο πρόχειρο.

2) Ημερομηνία & ώρα → Χρονική σήμανση

  1. Επιλέξτε ημερομηνία και ώρα στη φόρμα.
  2. Κάντε κλικ στο Μετατροπή.
  3. Θα λάβετε το αποτέλεσμα ως χρονική σήμανση σε δευτερόλεπτα και χιλιοστά του δευτερολέπτου.

Πού χρησιμοποιείται πιο συχνά η χρονική σήμανση UNIX;

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

  • Βάσεις δεδομένων – αποθήκευση και σύγκριση χρόνων σε MySQL, PostgreSQL, SQLite κ.λπ.
  • API – τα REST/GraphQL συχνά επιστρέφουν τον χρόνο ως χρονική σήμανση (εύκολη σειριοποίηση).
  • Αρχεία καταγραφής και παρακολούθηση – ακριβής ταξινόμηση συμβάντων στον χρόνο.
  • Git – οι δεσμεύσεις (commits) περιέχουν χρονικά δεδομένα.
  • Συστήματα αρχείων – χρόνοι όπως mtime/ctime/atime (τελευταία τροποποίηση κ.λπ.).
  • JWT – οι δηλώσεις iat (issued at) και exp (expires) είναι συνήθως σε δευτερόλεπτα εποχής.
  • Linux/Unix shell – το date +%s επιστρέφει την τρέχουσα χρονική σήμανση.
  • JavaScript – το Date.now() επιστρέφει τον χρόνο σε χιλιοστά του δευτερολέπτου.

Πρακτικά παραδείγματα μετατροπής χρόνου UNIX

JavaScript (χρονική σήμανση ↔ ημερομηνία)

// Aktuální UNIX timestamp v sekundách
const tsSeconds = Math.floor(Date.now() / 1000);

// Aktuální timestamp v milisekundách
const tsMs = Date.now();

// Timestamp (s) -> datum
const dateFromSeconds = new Date(1700000000 * 1000);
console.log(dateFromSeconds.toISOString());

// Datum -> timestamp (s)
const ts = Math.floor(new Date("2024-01-01T00:00:00Z").getTime() / 1000);
console.log(ts);

Python (χρονική σήμανση ↔ datetime)

import time
from datetime import datetime, timezone

# Aktuální timestamp v sekundách
ts = int(time.time())

# Timestamp -> datetime (UTC)
dt_utc = datetime.fromtimestamp(1700000000, tz=timezone.utc);

# Datum -> timestamp
ts2 = int(datetime(2024, 1, 1, tzinfo=timezone.utc).timestamp())

SQL (MySQL)

-- Aktuální UNIX timestamp (s)
SELECT UNIX_TIMESTAMP();

-- Timestamp -> datum
SELECT FROM_UNIXTIME(1700000000);

-- Datum -> timestamp
SELECT UNIX_TIMESTAMP('2024-01-01 00:00:00');

Ζώνες ώρας: UTC, τοπική ώρα και ISO 8601

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

Έννοιες που είναι χρήσιμο να γνωρίζετε:

  • UTC – παγκόσμιο πρότυπο χωρίς θερινή/χειμερινή ώρα.
  • GMT – για κοινή χρήση πρακτικά ταυτόσημο με το UTC.
  • Offset – διαφορά από την UTC (π.χ. Αθήνα UTC+2 τον χειμώνα, UTC+3 το καλοκαίρι).

Περιορισμοί της χρονικής σήμανσης UNIX και το πρόβλημα του Έτους 2038

Το πρόβλημα του έτους 2038 (Year 2038 Problem)

Σε ορισμένα 32-bit συστήματα, η χρονική σήμανση αποθηκεύεται ως int32 με μέγιστο το 2.147.483.647, το οποίο αντιστοιχεί στην 19η Ιανουαρίου 2038 03:14:07 UTC. Μετά την υπέρβαση, μπορεί να συμβεί υπερχείλιση και λανθασμένη ώρα. Τα σύγχρονα 64-bit συστήματα συνήθως δεν έχουν αυτό το πρόβλημα.

Εύρος χρόνου UNIX 64-bit

Οι 64-bit τιμές καλύπτουν μια εξαιρετικά ευρεία περίοδο (πρακτικά „για πάντα“). Οι αρνητικές τιμές υποδηλώνουν ημερομηνία πριν από την 1η Ιανουαρίου 1970.


Συχνές Ερωτήσεις – Σχετικά με τη χρονική σήμανση UNIX

Είναι η χρονική σήμανση UNIX σε UTC, ή σε τοπική ώρα; Η χρονική σήμανση UNIX είναι πάντα σε UTC. Η τοπική ώρα προκύπτει μόνο κατά τη μετατροπή, ανάλογα με τη ζώνη ώρας. Ο μετατροπέας εμφανίζει συνήθως τόσο την UTC όσο και την τοπική ώρα.
Πώς μπορώ να καταλάβω αν η χρονική σήμανση είναι σε δευτερόλεπτα ή χιλιοστά του δευτερολέπτου; Για την τρέχουσα περίοδο, η χρονική σήμανση σε δευτερόλεπτα έχει συνήθως 10 ψηφία. Σε χιλιοστά του δευτερολέπτου έχει συνήθως 13 ψηφία και είναι περίπου 1000 φορές μεγαλύτερη. Ενδεικτικά: τιμή > 10¹² είναι συνήθως χιλιοστά του δευτερολέπτου.
Τι σημαίνει αρνητική χρονική σήμανση UNIX; Μια αρνητική χρονική σήμανση αντιπροσωπεύει μια ημερομηνία πριν από την 1η Ιανουαρίου 1970. Για παράδειγμα, το -1 αντιστοιχεί στην 31η Δεκεμβρίου 1969 23:59:59 UTC.
Πώς μετατρέπω τη χρονική σήμανση UNIX σε SQL; Στο MySQL χρησιμοποιείτε FROM_UNIXTIME(timestamp) και αντίστροφα UNIX_TIMESTAMP(ημερομηνία). Στο PostgreSQL είναι τυπικά TO_TIMESTAMP(timestamp) και EXTRACT(EPOCH FROM ημερομηνία).
Γιατί η εποχή UNIX ξεκινά την 1η Ιανουαρίου 1970; Είναι ένα ιστορικά επιλεγμένο σημείο αναφοράς από τις πρώτες μέρες του UNIX: απλό, πρακτικό και κοντά στην εποχή ανάπτυξης του συστήματος.