ตัวแปลง Timestamp ของ Unix
เครื่องมือแปลงแบบสองทางระหว่าง timestamp ของ Unix/Linux กับวันที่และเวลา โดยสามารถเปรียบเทียบตามเขตเวลาต่างๆ ได้หลายเขต
เวลาปัจจุบัน
แปลงเวลาestampเป็นวันที่
ผลลัพธ์การแปลง(อัตโนมัติ)
แปลงวันที่เป็นเวลาestamp
ผลลัพธ์การแปลง(อัตโนมัติ)
เครื่องมือแปลงเวลาestampหลายตัวเป็นวันเวลา
เครื่องมือแปลงเวลาestampหลายตัวเป็นวันเวลา
เครื่องมือแปลงวันเวลาหลายชุดเป็นเวลาestamp
เครื่องมือแปลงวันเวลาหลายชุดเป็นเวลาestamp
คำแนะนำการใช้งาน
เครื่องมือนี้ใช้เพื่อทำการแปลงระหว่างส่วนลับเวลา Unix กับวันเวลาอย่างรวดเร็วในสถานการณ์ต่างๆ รองรับความละเอียดในระดับวินาทีและมิลลิวินาที และสามารถเลือกเขตเวลาเป้าหมายเพื่อแสดงการเปรียบเทียบ มีตัวแปลงแบบบัตรเดี่ยวและหลายบัตร แปลงทันทีเมื่อมีการป้อนข้อมูล และอัพเดทผลลัพธ์อัตโนมัติเมื่อเปลี่ยนเขตเวลา นอกจากนี้ ยังมีช่วงเวลาสมัยใหม่ล่าสุดและช่วงเวลาที่ใช้บ่อย เพื่อตอบสนองความต้องการในการดีบักการพัฒนาและการแปลงเวลาประกอบในชีวิตประจำวัน
คุณสมบัติของเครื่องมือ
- แปลงทันทีเมื่อมีการป้อนข้อมูล รองรับการตรวจจับอัตโนมัติส่วนลับเวลาในระดับวินาที/มิลลิวินาที
- รองรับการเลือกและแสดงเขตเวลาทั่วโลก: มุมมองสามแบบ ได้แก่ ท้องถิ่น, UTC, เขตเวลาที่เลือก
- หลายบัตรตัวแปลง เพื่อการเปรียบเทียบข้อมูลจำนวนมากได้ง่าย
- อินเทอร์เฟซแบบตอบสนองและเป็นมิตรกับแป้นพิมพ์ มีความเข้าถึงที่ดี
- มีช่วงเวลาสมัยใหม่ล่าสุดและช่วงเวลาที่ใช้บ่อย สามารถคัดลอกและใช้ทันที
เวลาestamp คืออะไร?
ส่วนลับเวลา Unix (Unix Timestamp) คือจำนวนวินาทีหรือมิลลิวินาทีที่ผ่านไปตั้งแต่ 00:00:00 UTC ของวันที่ 1 มกราคม 1970 (Unix Epoch)
ส่วนลับเวลาเป็นตัวเลขที่ใช้แสดงเวลา โดยปกติจะใช้หน่วยวินาทีหรือมิลลิวินาที
จุดเริ่มต้นของส่วนลับเวลา คือ 00:00:00 UTC ของวันที่ 1 มกราคม 1970 ซึ่งเวลานี้เรียกว่า Unix Epoch
ส่วนลับเวลาเริ่มใช้งานในระบบปฏิบัติการ Unix ดังนั้นจึงมักเรียกว่าส่วนลับเวลา Unix
ส่วนลับเวลาใช้กันอย่างแพร่หลายในการเขียนโปรแกรมและการสื่อสารทางเครือข่าย โดยเฉพาะอย่างยิ่งในการพัฒนาเว็บ
ความละเอียดที่พบบ่อย: วินาที (เช่น 1735689600) และ มิลลิวินาที (เช่น 1735689600000) ในการแสดงวันเวลาที่เกี่ยวข้องกับเขตเวลา จะต้องใช้การจัดรูปแบบตามเขตเวลา
เวลาestampที่ใช้บ่อย (ระยะเวลา)
ปัญหา 2038 ของเวลาestamp
ปัญหา 2038 คือปัญหาที่เกิดจากการเก็บเวลา Unix timestamp (ในหน่วยวินาที ตั้งแต่ 1970-01-01 00:00:00 UTC) ในตัวแปรจำนวนเต็ม 32 บิต ที่มีเครื่องหมาย จะเกิดการ overflow หลังจากวันที่ 2038-01-19 03:14:07
เนื่องจากช่วงของจำนวนเต็ม 32 บิตที่มีเครื่องหมายอยู่ระหว่าง -2,147,483,648 ถึง 2,147,483,647 และเวลา 2038-01-19 03:14:07 UTC มี timestamp เท่ากับ 2,147,483,647 ดังนั้นหลังจากจุดเวลานี้ ตัวแปรจำนวนเต็ม 32 บิตที่มีเครื่องหมายจะไม่สามารถแสดง timestamp ต่อไปได้
ส่วนใหญ่ระบบเก่า หรือซอฟต์แวร์ที่ใช้ time_t 32 บิตจะได้รับผลกระทบ ระบบสมัยใหม่โดยทั่วไปใช้ 64 บิต (เช่นจำนวนเต็ม 64 บิตในหน่วยมิลลิวินาที) จึงไม่มีปัญหานี้
แนะนำให้ใช้ timestamp 64 บิต หรือใช้ไลบรารีเวลาที่รองรับช่วงวันที่ที่กว้างขวาง
วิธีรับ/แปลงเวลาestampผ่านภาษาโปรแกรม
Math.floor(Date.now() / 1000); // seconds
Date.now(); // milliseconds
new Date(1735689600 * 1000).toISOString();
new Date('2025-01-01T00:00:00Z').getTime();
time(); // seconds
intval(microtime(true) * 1000); // milliseconds
date('Y-m-d H:i:s', 1735689600);
strtotime('2025-01-01 00:00:00');
import time
int(time.time()) # seconds
int(time.time() * 1000) # milliseconds
import datetime
datetime.datetime.utcfromtimestamp(1735689600).isoformat()
import datetime
int(datetime.datetime(2025,1,1,0,0,0,tzinfo=datetime.timezone.utc).timestamp())
import "time"
time.Now().Unix() // seconds
time.Now().UnixMilli() // milliseconds
import "time"
time.Unix(1735689600, 0).UTC().Format(time.RFC3339)
import "time"
ts := time.Date(2025,1,1,0,0,0,0,time.UTC).Unix()
use chrono::Utc;
let now = Utc::now();
let sec = now.timestamp(); // seconds i64
let ms = now.timestamp_millis(); // milliseconds i128
use chrono::{DateTime, NaiveDateTime, Utc};
let dt: DateTime = NaiveDateTime::from_timestamp_opt(1735689600, 0)
.unwrap()
.and_utc();
let iso = dt.to_rfc3339();
use chrono::DateTime;
let ts = DateTime::parse_from_rfc3339("2025-01-01T00:00:00Z")
.unwrap()
.timestamp();
-- MySQL / MariaDB
SELECT UNIX_TIMESTAMP();
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM NOW())::bigint;
-- SQLite
SELECT strftime('%s', 'now');
-- MySQL / MariaDB
SELECT FROM_UNIXTIME(1735689600);
-- PostgreSQL
SELECT to_timestamp(1735689600) AT TIME ZONE 'UTC';
-- SQLite
SELECT datetime(1735689600, 'unixepoch');
-- MySQL / MariaDB
SELECT UNIX_TIMESTAMP('2025-01-01 00:00:00');
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2025-01-01 00:00:00+00')::bigint;
-- SQLite
SELECT strftime('%s', '2025-01-01 00:00:00');