Ano ang Unix Timestamp (At Bakit Ito Ginagamit ng mga Developer)?
Ang Unix timestamp ay iisang integer: ang bilang ng segundo na lumipas mula Enero 1, 1970, 00:00:00 UTC. Ang sandaling iyon ay tinatawag na Unix epoch, at ang bawat segundo mula noon ay binibilang nang tuloy-tuloy.
Ang kasalukuyang timestamp ngayon ay nasa bandang 1,750,000,000. Ang numerong iyon pa lang ay sapat na para sabihin sa anumang computer, database, o API kung aling eksaktong sandali sa oras ang ibig mong tukuyin — walang kalituhan.
Bakit 1970?
Ang Unix ay binuo noong huling bahagi ng 1960s sa Bell Labs. Nang kailangan ng mga engineer ng isang fixed na reference point para sa oras, pinili nila ang Enero 1, 1970 — simula ng bagong dekada, madaling intindihin, at “malapit” lang sa panahong iyon kaya hindi na kailangan ng negative numbers para sa karamihan ng mga praktikal na petsang ise-store noon.
Pragmatic ang pagpili, hindi dahil may espesyal na prinsipyo. Pero tumatak at naging pamantayan.
Anong Problema ang Nilulutas ng Unix Timestamps
Kapag ang petsa ay kinakatawan bilang string na nababasa ng tao, nagkakaroon ng kalituhan sa bawat layer:
- Hindi pagkakasundo sa format: Ang
03/04/25ba ay March 4 o April 3? 1925 ba o 2025? - Kalituhan sa time zone: Ang "3pm Friday" ay magkaibang sandali sa London kumpara sa Tokyo
- Pagkakaiba sa locale: May mga bansang day-month-year ang sulat, habang ang iba ay month-day-year
Iniiwasan ng Unix timestamp ang lahat ng ito. Ang 1711929600 ay isang malinaw at iisang sandali sa oras kahit nasaan ka o anong format ang gusto mo. Nagkakasundo ang mga makina; ang tao ang nagko-convert.
Seconds, Milliseconds, at Microseconds
Ang orihinal na Unix timestamp ay nasa seconds. Pero iba-iba ang resolution na ginagamit ng iba’t ibang system:
| Format | Unit | Example |
|---|---|---|
| Unix (POSIX) | Seconds | 1711929600 |
JavaScript Date.now() | Milliseconds | 1711929600000 |
Python time.time() | Seconds (float) | 1711929600.123 |
| Database timestamps | Often microseconds | 1711929600000000 |
Isa ito sa mga pinakakaraniwang pinagmumulan ng bug kapag nagtatrabaho sa iba’t ibang system. Kapag ipinasa mo ang JavaScript timestamp diretso sa Python o Go function, magiging 1,000× itong mas malaki. Laging i-check ang resolution kapag tumatawid sa system boundaries.
Pagbasa at Pagsulat ng Unix Timestamps
Sa JavaScript / TypeScript
// Current timestamp in seconds
Math.floor(Date.now() / 1000)
// Current timestamp in milliseconds
Date.now()
// Convert timestamp (seconds) to Date object
new Date(timestamp * 1000)
// Convert Date to timestamp (seconds)
Math.floor(new Date('2024-04-01').getTime() / 1000)
Sa Python
import time, datetime
# Current timestamp (float)
time.time()
# Convert to datetime
datetime.datetime.fromtimestamp(1711929600)
# Convert datetime to timestamp
datetime.datetime(2024, 4, 1).timestamp()
Sa SQL (PostgreSQL)
-- Current timestamp
EXTRACT(EPOCH FROM NOW())::int
-- Convert to timestamp
TO_TIMESTAMP(1711929600)
Hindi Naaapektuhan ng Time Zones ang Timestamp Mismo
Mahalaga ito at madalas maling naiintindihan.
Ang Unix timestamp ay laging kumakatawan sa isang sandali sa UTC. Kapag ipinapakita mo ito, kino-convert mo sa local time zone. Kapag ini-store mo ito, ini-store mo ang UTC value. Ang timestamp mismo ay time-zone neutral.
Ibig sabihin:
- Dalawang user na nasa magkaibang time zone pero nagse-save ng "now" ay makakakuha ng parehong timestamp
- Kapag ipinakita, makikita ng bawat user ito sa kanilang lokal na oras
- Walang kailangang offset adjustments sa database — sa presentation layer lang
Ang Year 2038 Problem
Ang Unix timestamps na naka-store bilang 32-bit signed integer ay makakabilang lang hanggang 2,147,483,647 seconds — na tumutugma sa Enero 19, 2038, 03:14:07 UTC. Pagkatapos noon, magwa-wrap ang 32-bit counter at magiging malaking negative number.
Ang mga system na gumagamit pa rin ng 32-bit integers para sa timestamps ay masisira sa petsang iyon. Karamihan sa modernong system ay gumagamit na ng 64-bit integers, na itinutulak ang overflow date sa year 292 billion — hindi na mahalaga sa praktikal na paggamit.
Kung nagtatrabaho ka sa embedded systems, legacy databases, o lumang C code, magandang i-check kung paano ini-store ang timestamps.
Kailan Gagamit ng Unix Timestamp
Gumamit ng Unix timestamp kapag:
- Nag-i-store ka ng dates sa database at gusto mo ng simpleng, sortable na integer
- Nagpapasa ka ng dates sa pagitan ng mga system o API
- Naghahambing o nagso-sort ka ng mga event ayon sa oras
- Kumukuwenta ka ng durations (ibawas lang ang dalawang timestamp)
- Gumagawa ka ng cache o expiry logic (
expires_at = now + 3600)
Gumamit ng formatted date string kapag:
- Nagpapakita ka ng petsa para sa user
- Nagla-log ka ng events na madaling basahin ng tao
- Nagtatrabaho ka sa spreadsheets o CSV exports
Mabilisang Conversions
| What | Seconds |
|---|---|
| 1 minute | 60 |
| 1 hour | 3,600 |
| 1 day | 86,400 |
| 1 week | 604,800 |
| 30 days | 2,592,000 |
| 1 year (approx.) | 31,536,000 |
Kinokonvert ng Unix Timestamp Converter ang anumang timestamp sa petsang madaling basahin ng tao, o kino-convert ang isang petsa sa Unix timestamp agad-agad.