🛠️

Whiz Tools

Build • Create • Innovate

ตัวแปลง Unix Timestamp เป็นวันที่: รองรับรูปแบบ 12/24 ชั่วโมง

แปลง Unix timestamps เป็นวันที่และเวลาที่อ่านได้สำหรับมนุษย์ เลือกระหว่างรูปแบบเวลา 12 ชั่วโมงและ 24 ชั่วโมงด้วยเครื่องมือแปลงที่ใช้งานง่ายนี้

ตัวแปลง Unix Timestamp

الطابع الزمني يونكس هو عدد الثواني منذ 1 يناير 1970 (UTC)

วันที่และเวลาที่แปลงแล้ว

📚

เอกสารประกอบ

ยูนิกซ์ ไทม์สแตมป์ คอนเวอร์เตอร์

บทนำ

ยูนิกซ์ไทมป์สแตมป์ (Unix timestamp) (หรือที่เรียกว่า POSIX time หรือ Epoch time) เป็นระบบสำหรับการอธิบายจุดในเวลา มันคือจำนวนวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970 (เที่ยงคืน UTC/GMT) โดยไม่คำนึงถึงวินาทีที่มีการเพิ่ม (leap seconds) ยูนิกซ์ไทมป์สแตมป์ถูกใช้กันอย่างแพร่หลายในระบบคอมพิวเตอร์และภาษาการเขียนโปรแกรมเนื่องจากมันให้การแทนที่เฉพาะจุดในเวลาในรูปแบบที่กระชับและไม่ขึ้นกับภาษา

ตัวแปลงนี้ช่วยให้คุณสามารถแปลงยูนิกซ์ไทมป์สแตมป์ให้เป็นวันที่และเวลาที่อ่านได้ในรูปแบบที่เข้าใจง่าย มันรองรับทั้งรูปแบบเวลา 12 ชั่วโมง (AM/PM) และ 24 ชั่วโมงเพื่อรองรับความชอบในระดับภูมิภาคและส่วนบุคคลที่แตกต่างกัน

วิธีการทำงานของยูนิกซ์ไทมป์สแตมป์

ยูนิกซ์ไทมป์สแตมป์ถูกคำนวณเป็นจำนวนวินาทีตั้งแต่ยูนิกซ์อีพอช (Unix Epoch) (วันที่ 1 มกราคม 1970, 00:00:00 UTC) ซึ่งทำให้มันมีประโยชน์โดยเฉพาะสำหรับการคำนวณความแตกต่างของเวลาและสำหรับการจัดเก็บวันที่ในรูปแบบที่กระชับ

สูตรการแปลงจากยูนิกซ์ไทมป์สแตมป์ไปยังวันที่ในปฏิทินประกอบด้วยหลายขั้นตอน:

  1. เริ่มต้นด้วยยูนิกซ์อีพอช (วันที่ 1 มกราคม 1970, 00:00:00 UTC)
  2. เพิ่มจำนวนวินาทีในไทป์สแตมป์
  3. คำนึงถึงปีอธิก (leap years), ความยาวเดือนที่แตกต่างกัน, และความซับซ้อนอื่น ๆ ของปฏิทิน
  4. ใช้การปรับเวลาเขตถ้าจำเป็น

ตัวอย่างเช่น ยูนิกซ์ไทมป์สแตมป์ 1609459200 แทนวันศุกร์ที่ 1 มกราคม 2021, 00:00:00 UTC

สูตรการแปลงสามารถแสดงได้ดังนี้:

วันที่=ยูนิกซ์อีพอช+ไทป์สแตมป์ (ในวินาที)\text{วันที่} = \text{ยูนิกซ์อีพอช} + \text{ไทป์สแตมป์ (ในวินาที)}

ภาษาการเขียนโปรแกรมและระบบปฏิบัติการส่วนใหญ่มีฟังก์ชันในตัวเพื่อจัดการการแปลงนี้ โดยทำให้การคำนวณปฏิทินที่ซับซ้อนกลายเป็นเรื่องง่าย

ตัวเลือกฟอร์แมตเวลา

ตัวแปลงนี้มีตัวเลือกฟอร์แมตเวลาสองแบบ:

  1. ฟอร์แมต 24 ชั่วโมง (บางครั้งเรียกว่า "เวลาแบบทหาร"): ชั่วโมงจะอยู่ในช่วง 0 ถึง 23 และไม่มีการระบุ AM/PM ตัวอย่างเช่น 15:00 แทนเวลา 3:00 PM

  2. ฟอร์แมต 12 ชั่วโมง: ชั่วโมงจะอยู่ในช่วง 1 ถึง 12 โดยมี AM (ante meridiem) สำหรับเวลาตั้งแต่เที่ยงคืนถึงเที่ยงวัน และ PM (post meridiem) สำหรับเวลาตั้งแต่เที่ยงวันถึงเที่ยงคืน ตัวอย่างเช่น 15:00 ในฟอร์แมต 24 ชั่วโมงจะแทนที่เวลา 3:00 PM

การเลือกระหว่างฟอร์แมตเหล่านี้ส่วนใหญ่เป็นเรื่องของธรรมเนียมในระดับภูมิภาคและความชอบส่วนบุคคล:

  • ฟอร์แมต 24 ชั่วโมงใช้กันทั่วไปในยุโรป, ละตินอเมริกา, และเอเชีย รวมถึงในบริบททางวิทยาศาสตร์, ทหาร, และการแพทย์ทั่วโลก
  • ฟอร์แมต 12 ชั่วโมงเป็นที่นิยมในสหรัฐอเมริกา, แคนาดา, ออสเตรเลีย, และบางประเทศที่พูดภาษาอังกฤษสำหรับการใช้งานในชีวิตประจำวัน

ข้อพิจารณาและข้อจำกัด

เมื่อทำงานกับยูนิกซ์ไทมป์สแตมป์ สิ่งสำคัญคือต้องตระหนักถึงหลายกรณีขอบเขตและข้อจำกัด:

  1. ไทป์สแตมป์เชิงลบ: แทนวันที่ก่อนยูนิกซ์อีพอช (วันที่ 1 มกราคม 1970) แม้ว่าจะถูกต้องทางคณิตศาสตร์ แต่บางระบบอาจไม่จัดการไทป์สแตมป์เชิงลบอย่างถูกต้อง

  2. ปัญหาปี 2038: ยูนิกซ์ไทมป์สแตมป์มักถูกจัดเก็บเป็นจำนวนเต็ม 32 บิตที่มีเครื่องหมาย ซึ่งจะเกินขีดจำกัดในวันที่ 19 มกราคม 2038 หลังจากจุดนี้ ระบบ 32 บิตจะไม่สามารถแทนเวลาที่ถูกต้องได้ เว้นแต่จะมีการปรับปรุงเพื่อใช้ประเภทจำนวนเต็มที่ใหญ่กว่า

  3. ไทป์สแตมป์ที่มีขนาดใหญ่มาก: วันที่ในอนาคตที่ไกลมากอาจไม่สามารถแทนได้ในบางระบบ หรืออาจถูกจัดการอย่างไม่สอดคล้องกัน

  4. วินาทีอธิก: ยูนิกซ์เวลาไม่คำนึงถึงวินาทีอธิก ซึ่งถูกเพิ่มเข้ามาใน UTC เพื่อชดเชยการหมุนที่ไม่สม่ำเสมอของโลก ซึ่งหมายความว่ายูนิกซ์เวลาไม่ถูกซิงโครไนซ์อย่างแม่นยำกับเวลาเชิงดาราศาสตร์

  5. การพิจารณาเขตเวลา: ยูนิกซ์ไทมป์สแตมป์แทนช่วงเวลาใน UTC การแปลงเป็นเวลาท้องถิ่นต้องการข้อมูลเขตเวลาเพิ่มเติม

  6. เวลาออมแสง: เมื่อแปลงไทป์สแตมป์เป็นเวลาท้องถิ่น ความซับซ้อนของการเปลี่ยนแปลงเวลาออมแสงต้องถูกพิจารณา

กรณีการใช้งาน

ยูนิกซ์ไทมป์สแตมป์ถูกใช้ในหลายแอปพลิเคชันทั่วทั้งการประมวลผลและการจัดการข้อมูล:

  1. บันทึกในฐานข้อมูล: ไทป์สแตมป์มักถูกใช้เพื่อบันทึกเมื่อมีการสร้างหรือแก้ไขรายการ

  2. การพัฒนาเว็บ: HTTP headers, cookies, และกลไกการแคชมักใช้ยูนิกซ์ไทมป์สแตมป์

  3. ไฟล์บันทึก: บันทึกระบบมักบันทึกเหตุการณ์ด้วยยูนิกซ์ไทมป์สแตมป์เพื่อให้การจัดลำดับเวลาอย่างแม่นยำ

  4. ระบบควบคุมเวอร์ชัน: Git และระบบ VCS อื่น ๆ ใช้ไทป์สแตมป์เพื่อบันทึกเมื่อมีการทำ commit

  5. การตอบสนอง API: API เว็บหลายแห่งรวมไทป์สแตมป์ในคำตอบของพวกเขาเพื่อบ่งชี้ว่าเมื่อใดที่ข้อมูลถูกสร้างขึ้นหรือเมื่อทรัพยากรถูกแก้ไขล่าสุด

  6. ระบบไฟล์: เวลาในการสร้างและแก้ไขไฟล์มักถูกจัดเก็บเป็นยูนิกซ์ไทมป์สแตมป์

  7. การจัดการเซสชัน: แอปพลิเคชันเว็บใช้ไทป์สแตมป์เพื่อตัดสินใจว่าเมื่อใดที่เซสชันของผู้ใช้ควรหมดอายุ

  8. การวิเคราะห์ข้อมูล: ไทป์สแตมป์ให้วิธีการมาตรฐานในการทำงานกับข้อมูลเชิงเวลาในแอปพลิเคชันการวิเคราะห์

ทางเลือก

แม้ว่ายูนิกซ์ไทมป์สแตมป์จะถูกใช้กันอย่างแพร่หลาย แต่ก็มีรูปแบบการแทนที่เวลาอื่น ๆ ที่อาจเหมาะสมกว่าในบางบริบท:

  1. ISO 8601: รูปแบบสตริงมาตรฐาน (เช่น "2021-01-01T00:00:00Z") ที่อ่านได้ง่ายในขณะที่ยังคงสามารถเรียงลำดับได้ มักจะถูกเลือกใช้สำหรับการแลกเปลี่ยนข้อมูลและแอปพลิเคชันที่มีการแสดงผลต่อผู้ใช้

  2. RFC 3339: โปรไฟล์ของ ISO 8601 ที่ใช้ในโปรโตคอลอินเทอร์เน็ต โดยมีข้อกำหนดการจัดรูปแบบที่เข้มงวดกว่า

  3. รูปแบบที่อ่านได้ง่าย: สตริงวันที่ที่มีการระบุในท้องถิ่น (เช่น "1 มกราคม 2021") เหมาะสำหรับการโต้ตอบกับผู้ใช้โดยตรง แต่ไม่เหมาะสำหรับการคำนวณ

  4. Microsoft FILETIME: ค่าที่มีขนาด 64 บิตที่แทนจำนวนช่วงเวลา 100 นาโนวินาทีตั้งแต่วันที่ 1 มกราคม 1601 ใช้ในระบบ Windows

  5. หมายเลขวันจูเลียน: ใช้ในดาราศาสตร์และแอปพลิเคชันทางวิทยาศาสตร์บางอย่าง โดยนับวันตั้งแต่วันที่ 1 มกราคม 4713 ก่อนคริสต์ศักราช

การเลือกใช้รูปแบบเวลา ขึ้นอยู่กับปัจจัยต่าง ๆ เช่น:

  • ความแม่นยำที่ต้องการ
  • ความต้องการในการอ่านของมนุษย์
  • ข้อจำกัดในการจัดเก็บ
  • ความเข้ากันได้กับระบบที่มีอยู่
  • ช่วงวันที่ที่ต้องการแทนที่

ประวัติศาสตร์

แนวคิดของเวลาแบบยูนิกซ์เกิดขึ้นจากการพัฒนาระบบปฏิบัติการยูนิกซ์ที่ Bell Labs ในช่วงปลายทศวรรษ 1960 และต้นทศวรรษ 1970 การตัดสินใจใช้วันที่ 1 มกราคม 1970 เป็นอีพอชนั้นค่อนข้างจะเป็นการเลือกที่สุ่ม แต่ก็มีความเหมาะสมในขณะนั้น—มันเป็นวันที่ใกล้เคียงพอที่จะลดความต้องการในการจัดเก็บสำหรับวันที่ที่น่าสนใจ แต่ก็ห่างไกลพอที่จะมีประโยชน์สำหรับข้อมูลทางประวัติศาสตร์

การใช้งานเดิมใช้จำนวนเต็ม 32 บิตที่มีเครื่องหมายเพื่อจัดเก็บจำนวนวินาที ซึ่งเพียงพอสำหรับอายุการใช้งานที่คาดการณ์ไว้ของระบบยูนิกซ์ในขณะนั้น อย่างไรก็ตาม การตัดสินใจนี้นำไปสู่ปัญหาปี 2038 (บางครั้งเรียกว่า "Y2K38" หรือ "Unix Millennium Bug") เนื่องจากจำนวนเต็ม 32 บิตสามารถแทนวันที่ได้สูงสุดจนถึงวันที่ 19 มกราคม 2038 (03:14:07 UTC)

เมื่อยูนิกซ์และระบบที่คล้ายกันได้รับความนิยม ยูนิกซ์ไทมป์สแตมป์จึงกลายเป็นมาตรฐานที่ไม่เป็นทางการในการแทนที่เวลาในคอมพิวเตอร์ มันถูกนำไปใช้โดยภาษาการเขียนโปรแกรม, ฐานข้อมูล, และแอปพลิเคชันจำนวนมาก ซึ่งขยายออกไปไกลกว่าบริบทยูนิกซ์เดิม

ระบบสมัยใหม่เริ่มใช้จำนวนเต็ม 64 บิตสำหรับไทป์สแตมป์ ซึ่งขยายช่วงที่สามารถแทนได้ประมาณ 292 พันล้านปีในทั้งสองทิศทางจากอีพอช ซึ่งแก้ไขปัญหาปี 2038 อย่างมีประสิทธิภาพ อย่างไรก็ตาม ระบบและแอปพลิเคชันที่เก่าแก่ยังคงอาจมีความเสี่ยง

ความเรียบง่ายและความมีประโยชน์ของยูนิกซ์ไทมป์สแตมป์ทำให้มันยังคงมีความเกี่ยวข้องแม้จะมีการพัฒนารูปแบบการแทนที่เวลาที่ซับซ้อนมากขึ้น มันยังคงเป็นแนวคิดพื้นฐานในการประมวลผลคอมพิวเตอร์ ซึ่งเป็นรากฐานของโครงสร้างพื้นฐานดิจิทัลของเรา

ตัวอย่างโค้ด

นี่คือตัวอย่างของการแปลงยูนิกซ์ไทมป์สแตมป์เป็นวันที่ที่อ่านได้ในภาษาการเขียนโปรแกรมต่าง ๆ:

1// การแปลงไทป์สแตมป์ใน JavaScript
2function convertUnixTimestamp(timestamp, use12Hour = false) {
3  // สร้างวัตถุ Date ใหม่ (JavaScript ใช้หน่วยมิลลิวินาที)
4  const date = new Date(timestamp * 1000);
5  
6  // ตัวเลือกการจัดรูปแบบ
7  const options = {
8    year: 'numeric',
9    month: 'long',
10    day: 'numeric',
11    weekday: 'long',
12    hour: use12Hour ? 'numeric' : '2-digit',
13    minute: '2-digit',
14    second: '2-digit',
15    hour12: use12Hour
16  };
17  
18  // แปลงเป็นสตริงโดยใช้การจัดรูปแบบตามภูมิภาค
19  return date.toLocaleString(undefined, options);
20}
21
22// การใช้งานตัวอย่าง
23const timestamp = 1609459200; // วันที่ 1 มกราคม 2021 00:00:00 UTC
24console.log(convertUnixTimestamp(timestamp, false)); // ฟอร์แมต 24 ชั่วโมง
25console.log(convertUnixTimestamp(timestamp, true));  // ฟอร์แมต 12 ชั่วโมง
26

การจัดการกรณีขอบเขต

เมื่อทำงานกับยูนิกซ์ไทมป์สแตมป์ สิ่งสำคัญคือต้องจัดการกรณีขอบเขตอย่างถูกต้อง นี่คือตัวอย่างการจัดการกรณีขอบเขตทั่วไป:

1// การจัดการกรณีขอบเขตใน JavaScript
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3  // ตรวจสอบว่าไทป์สแตมป์ถูกต้องหรือไม่
4  if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
5    return "ไทป์สแตมป์ไม่ถูกต้อง";
6  }
7  
8  // ตรวจสอบไทป์สแตมป์เชิงลบ (วันที่ก่อนปี 1970)
9  if (timestamp < 0) {
10    // บางเบราว์เซอร์อาจไม่จัดการไทป์สแตมป์เชิงลบอย่างถูกต้อง
11    // ใช้วิธีที่มีความแข็งแกร่งมากขึ้นสำหรับวันที่ก่อนปี 1970
12    const date = new Date(timestamp * 1000);
13    if (isNaN(date.getTime())) {
14      return "วันที่ไม่ถูกต้อง (ก่อนปี 1970)";
15    }
16  }
17  
18  // ตรวจสอบปัญหา Y2K38 (สำหรับระบบ 32 บิต)
19  const maxInt32 = 2147483647; // ค่าสูงสุดสำหรับจำนวนเต็ม 32 บิตที่มีเครื่องหมาย
20  if (timestamp > maxInt32) {
21    // พิจารณาใช้ BigInt สำหรับไทป์สแตมป์ที่มีขนาดใหญ่ใน JavaScript สมัยใหม่
22    console.warn("ไทป์สแตมป์เกินขีดจำกัดของจำนวนเต็ม 32 บิต (ปัญหา Y2K38)");
23  }
24  
25  // ดำเนินการแปลงตามปกติ
26  try {
27    const date = new Date(timestamp * 1000);
28    const options = {
29      year: 'numeric',
30      month: 'long',
31      day: 'numeric',
32      weekday: 'long',
33      hour: use12Hour ? 'numeric' : '2-digit',
34      minute: '2-digit',
35      second: '2-digit',
36      hour12: use12Hour
37    };
38    return date.toLocaleString(undefined, options);
39  } catch (error) {
40    return "เกิดข้อผิดพลาดในการแปลงไทป์สแตมป์: " + error.message;
41  }
42}
43

อ้างอิง

  1. "Unix Time." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Unix_time

  2. "Year 2038 Problem." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Year_2038_problem

  3. Olson, Arthur David. "The Complexities of Calendrical Time." The Open Group, https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf

  4. "ISO 8601." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/ISO_8601

  5. "RFC 3339: Date and Time on the Internet: Timestamps." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339

  6. Kernighan, Brian W., and Dennis M. Ritchie. "The C Programming Language." Prentice Hall, 1988.

🔗

เครื่องมือที่เกี่ยวข้อง

ค้นพบเครื่องมือเพิ่มเติมที่อาจมีประโยชน์สำหรับการทำงานของคุณ

เครื่องแปลงหน่วยเวลา: ปี, วัน, ชั่วโมง, นาที, วินาที

ลองเครื่องมือนี้

เครื่องมือจัดรูปแบบ JSON & ทำให้สวยงาม: พิมพ์ JSON ให้สวยงามด้วยการเยื้อง

ลองเครื่องมือนี้

เครื่องแปลงฐานตัวเลข: ไบนารี, ทศนิยม, เฮกซาเดซิมัล & ฐานที่กำหนดเอง

ลองเครื่องมือนี้

ตัวแปลงเลขฐานสอง-ฐานสิบ: แปลงระหว่างระบบเลข

ลองเครื่องมือนี้

เครื่องคำนวณเปอร์เซ็นต์เวลาทำงานบริการที่แม่นยำ

ลองเครื่องมือนี้

เครื่องแปลงหน่วยในพระคัมภีร์โบราณ: เครื่องมือวัดขนาดประวัติศาสตร์

ลองเครื่องมือนี้

เครื่องคำนวณวันในปีสำหรับการวางแผนและการเกษตร

ลองเครื่องมือนี้

ตัวนับโทเค็นสำหรับการประมวลผลภาษาธรรมชาติ

ลองเครื่องมือนี้