Epoch Time वास्तव में क्या है?
अगर आपने कभी प्रोग्रामिंग में dates और times के साथ काम किया है, तो आपने Unix timestamps के बारे में जरूर सुना होगा। लेकिन ये वास्तव में क्या हैं, और हम इनका उपयोग क्यों करते हैं?
Unix epoch time (जिसे Unix time, POSIX time, या सिर्फ "epoch" भी कहा जाता है) समय के एक विशेष क्षण को सेकंड्स की संख्या के रूप में दर्शाता है जो 1 जनवरी, 1970, आधी रात UTC (Universal Coordinated Time) से गुजर चुके हैं। इस विशेष क्षण को "the Unix epoch" या "epoch zero" के नाम से जाना जाता है।
1 जनवरी, 1970 क्यों?
यह तारीख भले ही मनमानी लगे, लेकिन इसे 1970 के दशक की शुरुआत में Bell Labs में Unix के विकास के दौरान चुना गया था। डेवलपर्स को अपने time-tracking system के लिए एक consistent starting point की जरूरत थी, और 1 जनवरी, 1970 उस समय के करीब थी जब वे प्रोजेक्ट पर काम कर रहे थे। तब से यह universal standard बन गया है।
Format को समझना
Unix timestamps अलग-अलग formats में आते हैं जो जरूरत की precision पर निर्भर करता है:
- Seconds (10 digits): स्टैंडर्ड format, जैसे
1728773400 - Milliseconds (13 digits): ज्यादा precision के लिए, जैसे
1728773400000 - Microseconds (16 digits): अत्यधिक सटीक timing के लिए, जैसे
1728773400000000
Seconds में सामान्य Time Intervals
इन सामान्य intervals को समझने से आपको timestamps के साथ ज्यादा सहजता से काम करने में मदद मिल सकती है:
| समय अवधि | सेकंड्स | त्वरित गणना |
|---|---|---|
| 1 घंटा | 3,600 | 60 × 60 |
| 1 दिन | 86,400 | 24 × 3,600 |
| 1 सप्ताह | 604,800 | 7 × 86,400 |
| 1 महीना (औसत) | 2,629,743 | 30.44 × 86,400 |
| 1 वर्ष (औसत) | 31,556,926 | 365.24 × 86,400 |
वर्ष 2038 की समस्या (Y2038)
यहाँ कुछ महत्वपूर्ण है: कई systems Unix timestamps को 32-bit signed integer के रूप में store करते हैं। यह Y2K bug के समान एक समस्या पैदा करता है।
एक 32-bit signed integer केवल 2,147,483,647 सेकंड तक ही count कर सकता है। एक बार जब हम 19 जनवरी, 2038, को 03:14:07 UTC पर पहुंच जाएंगे, तो यह counter overflow हो जाएगा और negative number में बदल जाएगा, जिससे संभावित रूप से system failures और bugs हो सकते हैं।
वर्तमान Epoch Time प्राप्त करना
हर programming language का वर्तमान Unix timestamp प्राप्त करने का अपना तरीका है। यहाँ सबसे आम तरीके हैं:
Web Development
JavaScript
// Timestamp को milliseconds में प्राप्त करें, seconds के लिए 1000 से divide करें
const timestamp = Math.floor(Date.now() / 1000);
// वैकल्पिक तरीका
const timestamp = Math.floor(new Date().getTime() / 1000);
PHP
// सरल और सीधा
$timestamp = time();
// DateTime का उपयोग करके (ज्यादा flexible)
$timestamp = (new DateTime())->getTimestamp();
Backend Languages
Python
import time
# वर्तमान timestamp प्राप्त करें
timestamp = int(time.time())
# datetime module का उपयोग करके
from datetime import datetime
timestamp = int(datetime.now().timestamp())
Java
// Milliseconds return करता है, seconds के लिए 1000 से divide करें
long timestamp = System.currentTimeMillis() / 1000;
// Instant का उपयोग करके (Java 8+)
long timestamp = Instant.now().getEpochSecond();
C#
// .NET Framework 4.6+ / .NET Core
long timestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
// पुराने versions
var epoch = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
Ruby
# वर्तमान timestamp प्राप्त करें
timestamp = Time.now.to_i
# वैकल्पिक
timestamp = Time.new.to_i
Go
import "time"
// वर्तमान Unix timestamp प्राप्त करें
timestamp := time.Now().Unix()
// Milliseconds के लिए
milliseconds := time.Now().UnixMilli()
Database Queries
MySQL
-- वर्तमान timestamp प्राप्त करें
SELECT UNIX_TIMESTAMP();
-- विशिष्ट date से timestamp प्राप्त करें
SELECT UNIX_TIMESTAMP('2025-10-12 14:30:00');
PostgreSQL
-- वर्तमान timestamp प्राप्त करें
SELECT EXTRACT(EPOCH FROM NOW());
-- विशिष्ट date से
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2025-10-12 14:30:00');
SQLite
-- वर्तमान timestamp प्राप्त करें
SELECT STRFTIME('%s', 'now');
-- विशिष्ट date से
SELECT STRFTIME('%s', '2025-10-12 14:30:00');
Command Line
Unix/Linux Shell
# वर्तमान timestamp प्राप्त करें
date +%s
# विशिष्ट date को timestamp में convert करें
date +%s -d "2025-10-12 14:30:00"
# UTC/GMT time के लिए, -d के बजाय -ud का उपयोग करें
date +%s -ud "2025-10-12 14:30:00"
PowerShell
# वर्तमान timestamp प्राप्त करें
[int][double]::Parse((Get-Date (Get-Date).ToUniversalTime() -UFormat %s))
Epoch से Human-Readable Date में Convert करना
एक बार जब आपके पास Unix timestamp हो, तो आपको अक्सर इसे readable date format में वापस convert करने की जरूरत होगी:
JavaScript
// Timestamp को Date object में convert करें
const date = new Date(timestamp * 1000); // Milliseconds के लिए 1000 से multiply करें
// Format करें
console.log(date.toLocaleString()); // Local format
console.log(date.toISOString()); // ISO 8601 format
PHP
// Timestamp को format करें
$date = date('Y-m-d H:i:s', $timestamp);
// RFC 2822 format
$date = date('r', $timestamp);
// DateTime का उपयोग करके
$date = (new DateTime())->setTimestamp($timestamp)->format('Y-m-d H:i:s');
Python
from datetime import datetime
# datetime object में convert करें
dt = datetime.fromtimestamp(timestamp)
# Format करें
formatted = dt.strftime('%Y-%m-%d %H:%M:%S')
# UTC के लिए
dt_utc = datetime.utcfromtimestamp(timestamp)
MySQL
-- Timestamp को datetime में convert करें
SELECT FROM_UNIXTIME(1728773400);
-- Custom format के साथ
SELECT FROM_UNIXTIME(1728773400, '%Y-%m-%d %H:%i:%s');
Human-Readable Date से Epoch में Convert करना
विपरीत operation भी उतना ही महत्वपूर्ण है:
JavaScript
// Date string को timestamp में parse करें
const timestamp = Math.floor(new Date('2025-10-12 14:30:00').getTime() / 1000);
// Date.parse() का उपयोग करके
const timestamp = Math.floor(Date.parse('October 12, 2025') / 1000);
PHP
// अधिकांश English date texts को parse करें
$timestamp = strtotime('15 November 2025');
$timestamp = strtotime('next Monday');
$timestamp = strtotime('+1 week');
// DateTime का उपयोग करके
$timestamp = (new DateTime('2025-10-12 14:30:00'))->getTimestamp();
Python
from datetime import datetime
import time
# Date string को parse करें
dt = datetime.strptime('2025-10-12 14:30:00', '%Y-%m-%d %H:%M:%S')
timestamp = int(dt.timestamp())
# UTC के लिए
import calendar
timestamp = calendar.timegm(time.strptime('2025-10-12 14:30:00', '%Y-%m-%d %H:%M:%S'))
Best Practices
जब आप अपने applications में Unix timestamps के साथ काम कर रहे हों:
- हमेशा 64-bit integers का उपयोग करें Y2038 समस्या से बचने के लिए
- अपने database में timestamps को UTC में store करें, केवल display के लिए local time में convert करें
- अपने पूरे application में consistent रहें अपनी precision (seconds vs milliseconds) के साथ
- अपने format को document करें – स्पष्ट करें कि आप seconds या milliseconds का उपयोग कर रहे हैं
- जटिल date/time operations के लिए timezone-aware libraries पर विचार करें
- कभी भी local time को timestamp के रूप में store न करें बिना timezone information के
निष्कर्ष
Unix timestamps प्रोग्रामिंग में एक मौलिक अवधारणा है जिसे हर developer को समझना चाहिए। वे समय को represent करने का एक सरल, सार्वभौमिक तरीका प्रदान करते हैं जो सभी systems और programming languages में काम करता है।
चाहे आप एक web application बना रहे हों, databases के साथ काम कर रहे हों, या बस tasks को schedule करने की जरूरत हो, epoch time को समझना आपके जीवन को बहुत आसान बना देगा। Timestamps और human-readable dates के बीच जल्दी से convert करने के लिए हमारे Unix Timestamp Converter tool का उपयोग करें!