Epoch Time: Unix Timestamps की नींव

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" के नाम से जाना जाता है।

त्वरित उदाहरण: अगर वर्तमान Unix timestamp 1728773400 है, तो इसका मतलब है कि 1 जनवरी, 1970 की आधी रात से ठीक 1,728,773,400 सेकंड बीत चुके हैं।

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 हो सकते हैं।

महत्वपूर्ण: आधुनिक systems 64-bit timestamps की ओर बढ़ रहे हैं, जो अगले 292 बिलियन वर्षों तक overflow नहीं होंगे। सुनिश्चित करें कि आपके applications timestamp storage के लिए 64-bit integers का उपयोग करते हैं!

वर्तमान 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 का उपयोग करें!

अभी आज़माएं: Unix timestamps के साथ real-time में काम करने का अभ्यास करने के लिए हमारे converter tool पर जाएं!