๐Ÿ•
โ† ๊ฐ€์ด๋“œ ๋ชฉ๋ก์œผ๋กœ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ Unix ํƒ€์ž„์Šคํƒฌํ”„ ๋‹ค๋ฃจ๊ธฐ

ยท ํƒœ๊ทธ: javascript, python, php, golang, programming, unix-timestamp, epoch, database

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Unix ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Unix ํƒ€์ž„์Šคํƒฌํ”„๋Š” ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ๋ณดํŽธ์ ์ธ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ๋‚ ์งœ ์—ฐ์‚ฐ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ (๋‹จ์ˆœํžˆ ์ดˆ๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋ฉด ๋จ), ์‹œ๊ฐ„๋Œ€ ํ˜ผ๋ž€์„ ์—†์• ๋ฉฐ, JSON์œผ๋กœ ๊น”๋”ํ•˜๊ฒŒ ์ง๋ ฌํ™”๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, API๋Š” ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์–ธ์–ด์™€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

JavaScript (๋ธŒ๋ผ์šฐ์ € ๋ฐ Node.js)

JavaScript๋Š” Date ๊ฐ์ฒด์— ๋ฐ€๋ฆฌ์ดˆ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์€ ์ดˆ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€์žฅ ํ”ํ•œ ๋ฒ„๊ทธ์˜ ์›์ธ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„ ๊ฐ€์ ธ์˜ค๊ธฐ

// ์—ํฌํฌ ์ดํ›„ ๋ฐ€๋ฆฌ์ดˆ (ํ‘œ์ค€ JavaScript)
const nowMs = Date.now();         // 1785292800000

// ์—ํฌํฌ ์ดํ›„ ์ดˆ(ํ˜ธํ™˜์„ฑ ์šฉ๋„)
const nowSec = Math.floor(Date.now() / 1000);  // 1785292800

// Node.js ๊ณ ํ•ด์ƒ๋„ ํƒ€์ด๋จธ(๋งˆ์ดํฌ๋กœ์ดˆ)
const hrTime = process.hrtime.bigint();

ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

// ์ดˆ ๋‹จ์œ„์—์„œ ๋ณ€ํ™˜ (๋Œ€๋ถ€๋ถ„์˜ API ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)
const timestamp = 1785292800;
const date = new Date(timestamp * 1000);  // 1000์„ ๊ณฑํ•˜์„ธ์š”!

// ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„์—์„œ ๋ณ€ํ™˜ (JavaScript ๊ธฐ๋ณธ)
const dateFromMs = new Date(1785292800000);

// ๊ฒฐ๊ณผ ์„œ์‹ ์ง€์ •
console.log(date.toISOString());
// Output: 2026-07-19T00:00:00.000Z

console.log(date.toLocaleString("en-US", { timeZone: "America/New_York" }));
// Output: 7/18/2026, 8:00:00 PM

๋‚ ์งœ ๋ฌธ์ž์—ด์„ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ํŒŒ์‹ฑํ•˜๊ธฐ

// Date.parse() ์‚ฌ์šฉ (๋ฐ€๋ฆฌ์ดˆ ๋ฐ˜ํ™˜)
const ms = Date.parse("2026-07-19T00:00:00Z");
const sec = ms / 1000;  // 1785292800

// Date ์ƒ์„ฑ์ž ์‚ฌ์šฉ
const ts = Math.floor(new Date("2026-07-19 UTC").getTime() / 1000);

์ฃผ์˜: Date.parse()์˜ ๋™์ž‘์€ ๋น„ํ‘œ์ค€ ๋‚ ์งœ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์‹œ๊ฐ„๋Œ€ ์ง€์ •์ž(Z for UTC)์™€ ํ•จ๊ป˜ ISO 8601 ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

JavaScript์—์„œ ์‹œ๊ฐ„๋Œ€ ๋‹ค๋ฃจ๊ธฐ

// ํŠน์ • ์‹œ๊ฐ„๋Œ€๋กœ ์„œ์‹ ์ง€์ •
const date = new Date(1785292800 * 1000);
const options = {
  timeZone: "Asia/Tokyo",
  year: "numeric", month: "2-digit", day: "2-digit",
  hour: "2-digit", minute: "2-digit", second: "2-digit",
};
console.log(date.toLocaleString("ja-JP", options));
// Output: 07/19/2026 09:00:00

๊ณ ๊ธ‰ ์‹œ๊ฐ„๋Œ€ ์ž‘์—…์—๋Š” Intl.DateTimeFormat API ๋˜๋Š” date-fns-tz, Luxon๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Python

Python์€ ํƒ€์ž„์Šคํƒฌํ”„ ์ž‘์—…์„ ์œ„ํ•œ ์ €์ˆ˜์ค€(time) ๋ฐ ๊ณ ์ˆ˜์ค€(datetime) ๋ชจ๋“ˆ์„ ๋ชจ๋‘ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„ ๊ฐ€์ ธ์˜ค๊ธฐ

import time

# ์†Œ์ˆ˜ ์ดˆ(float, ์†Œ์ˆ˜์  ์ดํ•˜ ๋ฐ€๋ฆฌ์ดˆ ํฌํ•จ)
current = time.time()
# ์˜ˆ: 1785292800.123456

# ์ •์ˆ˜๋กœ
current_int = int(time.time())

ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ Datetime์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

from datetime import datetime

# UTC datetime (Python 3.x)
dt_utc = datetime.utcfromtimestamp(1785292800)

# ์‹œ๊ฐ„๋Œ€ ์ธ์‹ datetime (Python 3.9+ with zoneinfo)
from zoneinfo import ZoneInfo
dt_tokyo = datetime.fromtimestamp(1785292800, tz=ZoneInfo("Asia/Tokyo"))

# ์„œ์‹์ด ์ง€์ •๋œ ๋ฌธ์ž์—ด
print(dt_utc.strftime("%Y-%m-%d %H:%M:%S"))
# Output: 2026-07-19 00:00:00

๋‚ ์งœ ๋ฌธ์ž์—ด์„ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ํŒŒ์‹ฑํ•˜๊ธฐ

import time
from datetime import datetime

# ๋‚ ์งœ ๋ฌธ์ž์—ด์—์„œ ๋ณ€ํ™˜
dt = datetime.strptime("2026-07-19 00:00:00", "%Y-%m-%d %H:%M:%S")
timestamp = time.mktime(dt.timetuple())  # ๋กœ์ปฌ ์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌ๋จ

# UTC ์ž…๋ ฅ์˜ ๊ฒฝ์šฐ
from datetime import timezone
timestamp_utc = dt.replace(tzinfo=timezone.utc).timestamp()

Pandas๋กœ ์ž‘์—…ํ•˜๊ธฐ (๋ฐ์ดํ„ฐ ๋ถ„์„)

import pandas as pd

# Unix ํƒ€์ž„์Šคํƒฌํ”„ ์—ด์„ datetime์œผ๋กœ ๋ณ€ํ™˜
df["timestamp"] = pd.to_datetime(df["unix_seconds"], unit="s")

# ๋‹ค๋ฅธ ๋‹จ์œ„๋กœ ๋ณ€ํ™˜
df["datetime_ms"] = pd.to_datetime(df["unix_milliseconds"], unit="ms")

# ์‹œ๊ฐ„๋Œ€ ์„ค์ •
df["timestamp_ny"] = df["timestamp"].dt.tz_localize("UTC").dt.tz_convert("America/New_York")

PHP

PHP๋Š” ํƒ€์ž„์Šคํƒฌํ”„ ์ž‘์—…์— ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„ ๊ฐ€์ ธ์˜ค๊ธฐ

<?php
$now = time();           // ์ •์ˆ˜: 1785292800
$nowMicro = microtime();  // ๋ฌธ์ž์—ด: "0.12345600 1785292800"
$nowFloat = microtime(true);  // Float: 1785292800.1235

ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

<?php
echo date("Y-m-d H:i:s", 1785292800);
// Output: 2026-07-19 00:00:00

// ์‹œ๊ฐ„๋Œ€ ํฌํ•จ
$tz = new DateTimeZone("Europe/London");
$dt = new DateTime("@1785292800");
$dt->setTimezone($tz);
echo $dt->format("Y-m-d H:i:s");

Go

Go์˜ time ํŒจํ‚ค์ง€๋Š” ์ž˜ ์„ค๊ณ„๋˜์–ด ์žˆ์ง€๋งŒ, ๊ด€๋ จ๋œ ํƒ€์ž…์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„ ๊ฐ€์ ธ์˜ค๊ธฐ

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    sec := now.Unix()            // int64 ์ดˆ
    milli := now.UnixMilli()     // int64 ๋ฐ€๋ฆฌ์ดˆ
    nano := now.UnixNano()       // int64 ๋‚˜๋…ธ์ดˆ
    fmt.Printf("Seconds: %d\n", sec)
}

ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

t := time.Unix(1785292800, 0)
fmt.Println(t.UTC())
// Output: 2026-07-19 00:00:00 +0000 UTC

// ๋ฌธ์ž์—ด๋กœ ์„œ์‹ ์ง€์ •
fmt.Println(t.Format("2006-01-02 15:04:05"))
// Output: 2026-07-19 00:00:00

// ์‹œ๊ฐ„๋Œ€ ํฌํ•จ
loc, _ := time.LoadLocation("America/Chicago")
fmt.Println(t.In(loc))

Rust

use std::time::{SystemTime, UNIX_EPOCH};

// ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„
let now = SystemTime::now()
    .duration_since(UNIX_EPOCH)
    .expect("Time went backwards");
println!("Seconds: {}", now.as_secs());

// ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜
let dt = chrono::NaiveDateTime::from_timestamp_opt(1785292800, 0).unwrap();
println!("{}", dt.format("%Y-%m-%d %H:%M:%S"));

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ €์žฅ: ๋ชจ๋ฒ” ์‚ฌ๋ก€

์˜ฌ๋ฐ”๋ฅธ ์—ด ์œ ํ˜• ์„ ํƒํ•˜๊ธฐ

| ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค | ๊ถŒ์žฅ ์œ ํ˜• | ์ฐธ๊ณ  | |----------|-----------------|-------| | PostgreSQL | TIMESTAMP WITH TIME ZONE ๋˜๋Š” BIGINT | ๋„ค์ดํ‹ฐ๋ธŒ ํƒ€์ž„์Šคํƒฌํ”„ ์œ ํ˜•์ด ์„ ํ˜ธ๋จ | | MySQL / MariaDB | INT UNSIGNED(2106๋…„๊นŒ์ง€์˜ ๋‚ ์งœ) ๋˜๋Š” BIGINT | TIMESTAMP ์œ ํ˜•(๋ฒ”์œ„๊ฐ€ 2038๋…„์—์„œ ๋๋‚จ) ํ”ผํ•  ๊ฒƒ | | SQLite | INTEGER | SQLite์—๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ํƒ€์ž„์Šคํƒฌํ”„ ์œ ํ˜•์ด ์—†์Œ | | MongoDB | Date ๊ฐ์ฒด ๋˜๋Š” int64 | BSON Date๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ 64๋น„ํŠธ ํƒ€์ž„์Šคํƒฌํ”„ |

PostgreSQL ์˜ˆ์ œ

-- ๋„ค์ดํ‹ฐ๋ธŒ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์ €์žฅ
CREATE TABLE events (
    id SERIAL PRIMARY KEY,
    occurred_at TIMESTAMP WITH TIME ZONE NOT NULL,
    payload JSONB
);

-- ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์‚ฝ์ž…
INSERT INTO events (occurred_at) VALUES (NOW());

-- Unix ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์กฐํšŒ
SELECT EXTRACT(EPOCH FROM occurred_at) AS unix_ts FROM events;

MySQL ์˜ˆ์ œ

-- ๋ฏธ๋ž˜์—๋„ ์•ˆ์ „ํ•œ ์ €์žฅ์„ ์œ„ํ•ด BIGINT ์‚ฌ์šฉ
CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event_time BIGINT NOT NULL,
    message TEXT
);

-- ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„ ์‚ฝ์ž…
INSERT INTO logs (event_time, message) VALUES (UNIX_TIMESTAMP(), 'Server started');

-- ์กฐํšŒ ๋ฐ ๋ณ€ํ™˜
SELECT FROM_UNIXTIME(event_time) AS readable_time FROM logs;

์–ธ์–ด ๋น„๊ต ํ‘œ

| ์–ธ์–ด | ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„ | ํƒ€์ž„์Šคํƒฌํ”„ โ†’ ๋‚ ์งœ | ๋‚ ์งœ โ†’ ํƒ€์ž„์Šคํƒฌํ”„ | ํ•ด์ƒ๋„ | |----------|-------------------|-------------------|-------------------|------------| | JavaScript | Date.now() | new Date(ts * 1000) | Date.parse(str) / 1000 | ๋ฐ€๋ฆฌ์ดˆ | | Python | time.time() | datetime.fromtimestamp(ts) | datetime.strptime(str).timestamp() | ์†Œ์ˆ˜ ์ดˆ | | PHP | time() | date("Y-m-d", ts) | strtotime(str) | ์ดˆ | | Go | time.Now().Unix() | time.Unix(ts, 0) | time.Parse(layout, str).Unix() | ์ดˆ | | Rust | SystemTime::now() | NaiveDateTime::from_timestamp_opt() | โ€” | ๋‹ค์–‘ํ•จ |

์–ด๋–ค ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋“ , ์ €ํฌ Unix Timestamp Converter๋Š” ๋น ๋ฅธ ํ™•์ธ ๋ฐ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋™๋ฐ˜ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ Unix ํƒ€์ž„์Šคํƒฌํ”„ ๋‹ค๋ฃจ๊ธฐ - CoolTool