محول الطوابع الزمنية اليونية إلى تاريخ: دعم تنسيق 12/24 ساعة
قم بتحويل الطوابع الزمنية اليونية إلى تواريخ وأوقات قابلة للقراءة البشرية. اختر بين تنسيق 12 ساعة و 24 ساعة مع هذه الأداة البسيطة وسهلة الاستخدام.
محول الطابع الزمني يونكس
التاريخ والوقت المحول
الوثائق
محول الطوابع الزمنية لنظام يونكس
المقدمة
تُعتبر الطوابع الزمنية لنظام يونكس (المعروفة أيضًا باسم وقت POSIX أو وقت Epoch) نظامًا لوصف نقطة زمنية. إنها عدد الثواني التي مرت منذ 1 يناير 1970 (منتصف الليل بتوقيت UTC/GMT)، دون احتساب الثواني الكبيسة. تُستخدم الطوابع الزمنية لنظام يونكس على نطاق واسع في أنظمة الكمبيوتر ولغات البرمجة لأنها توفر تمثيلًا مضغوطًا ومستقلًا عن اللغة للحظة معينة في الوقت.
يسمح لك هذا المحول بتحويل الطابع الزمني لنظام يونكس إلى تنسيق تاريخ ووقت سهل القراءة. يدعم كل من تنسيقات الوقت 12 ساعة (AM/PM) و24 ساعة لتلبية التفضيلات الإقليمية والشخصية المختلفة.
كيف تعمل الطوابع الزمنية لنظام يونكس
تُحسب الطوابع الزمنية لنظام يونكس كعدد الثواني منذ بداية نظام يونكس (1 يناير 1970، 00:00:00 بتوقيت UTC). وهذا يجعلها مفيدة بشكل خاص لحساب الفروق الزمنية ولتخزين التواريخ بتنسيق مضغوط.
تشمل عملية التحويل من الطابع الزمني لنظام يونكس إلى تاريخ تقويمي عدة خطوات:
- ابدأ مع بداية نظام يونكس (1 يناير 1970، 00:00:00 بتوقيت UTC)
- أضف عدد الثواني في الطابع الزمني
- احسب السنوات الكبيسة، وأطوال الأشهر المتغيرة، وغيرها من التعقيدات التقويمية
- طبق تعديلات المنطقة الزمنية إذا لزم الأمر
على سبيل المثال، يمثل الطابع الزمني لنظام يونكس 1609459200
يوم الجمعة، 1 يناير 2021، 00:00:00 بتوقيت UTC.
يمكن التعبير عن صيغة التحويل كالتالي:
تقدم معظم لغات البرمجة وأنظمة التشغيل وظائف مدمجة للتعامل مع هذا التحويل، مما يخفف من تعقيدات حسابات التقويم.
خيارات تنسيق الوقت
يقدم هذا المحول خيارين لتنسيق الوقت:
-
تنسيق 24 ساعة (المعروف أحيانًا باسم "الوقت العسكري"): تتراوح الساعات من 0 إلى 23، ولا يوجد تمييز AM/PM. على سبيل المثال، يتم تمثيل الساعة 3:00 مساءً كـ 15:00.
-
تنسيق 12 ساعة: تتراوح الساعات من 1 إلى 12، مع AM (قبل الظهر) للأوقات من منتصف الليل إلى الظهر، وPM (بعد الظهر) للأوقات من الظهر إلى منتصف الليل. على سبيل المثال، يتم تمثيل الساعة 15:00 في تنسيق 24 ساعة كـ 3:00 مساءً.
الاختيار بين هذه التنسيقات هو في الغالب مسألة تقليد إقليمي وتفضيل شخصي:
- يُستخدم تنسيق 24 ساعة بشكل شائع في معظم دول أوروبا وأمريكا اللاتينية وآسيا، بالإضافة إلى السياقات العلمية والعسكرية والطبية في جميع أنحاء العالم.
- يُستخدم تنسيق 12 ساعة بشكل شائع في الولايات المتحدة وكندا وأستراليا وبعض الدول الناطقة بالإنجليزية للاستخدام اليومي.
الحالات الحدية والقيود
عند العمل مع الطوابع الزمنية لنظام يونكس، من المهم أن تكون على دراية بعدة حالات حدية وقيود:
-
الطوابع الزمنية السلبية: تمثل هذه التواريخ قبل بداية نظام يونكس (1 يناير 1970). بينما هي صالحة رياضيًا، قد لا تتعامل بعض الأنظمة بشكل صحيح مع الطوابع الزمنية السلبية.
-
مشكلة عام 2038: غالبًا ما يتم تخزين الطوابع الزمنية لنظام يونكس كأعداد صحيحة موقعة 32 بت، والتي ستفيض في 19 يناير 2038. بعد هذه النقطة، لن تكون الأنظمة التي تستخدم 32 بت قادرة على تمثيل الأوقات بشكل صحيح ما لم يتم تعديلها لاستخدام نوع عدد صحيح أكبر.
-
الطوابع الزمنية الكبيرة جدًا: قد لا يمكن تمثيل التواريخ المستقبلية البعيدة في بعض الأنظمة، أو قد يتم التعامل معها بشكل غير متسق.
-
الثواني الكبيسة: لا يأخذ الوقت في نظام يونكس في الاعتبار الثواني الكبيسة، التي تُضاف أحيانًا إلى UTC لتعويض دوران الأرض غير المنتظم. وهذا يعني أن الوقت في نظام يونكس ليس متزامنًا بدقة مع الوقت الفلكي.
-
اعتبارات المنطقة الزمنية: تمثل الطوابع الزمنية لنظام يونكس لحظات بتوقيت UTC. يتطلب التحويل إلى الوقت المحلي معلومات إضافية عن المنطقة الزمنية.
-
توقيت الصيف: عند تحويل الطوابع الزمنية إلى الوقت المحلي، يجب أخذ تعقيدات انتقالات توقيت الصيف في الاعتبار.
حالات الاستخدام
تُستخدم الطوابع الزمنية لنظام يونكس في العديد من التطبيقات عبر الحوسبة وإدارة البيانات:
-
سجلات قواعد البيانات: تُستخدم الطوابع الزمنية عادةً لتسجيل متى تم إنشاء الإدخالات أو تعديلها.
-
تطوير الويب: غالبًا ما تستخدم رؤوس HTTP وملفات تعريف الارتباط وآليات التخزين المؤقت الطوابع الزمنية لنظام يونكس.
-
ملفات السجل: تسجل سجلات النظام عادةً الأحداث باستخدام الطوابع الزمنية لنظام يونكس لترتيبها زمنيًا بدقة.
-
أنظمة التحكم في الإصدارات: تستخدم Git وأنظمة التحكم في الإصدارات الأخرى الطوابع الزمنية لتسجيل متى تم إجراء الالتزامات.
-
استجابات واجهة برمجة التطبيقات: تتضمن العديد من واجهات برمجة التطبيقات على الويب الطوابع الزمنية في استجابتها للإشارة إلى متى تم إنشاء البيانات أو متى تم تعديل الموارد آخر مرة.
-
أنظمة الملفات: تُخزن أوقات إنشاء وتعديل الملفات غالبًا كطوابع زمنية لنظام يونكس.
-
إدارة الجلسات: تستخدم التطبيقات الويب الطوابع الزمنية لتحديد متى يجب أن تنتهي صلاحية جلسات المستخدم.
-
تحليل البيانات: توفر الطوابع الزمنية طريقة موحدة للعمل مع البيانات الزمنية في تطبيقات التحليل.
البدائل
بينما تُستخدم الطوابع الزمنية لنظام يونكس على نطاق واسع، هناك تنسيقات بديلة لتمثيل الوقت قد تكون أكثر ملاءمة في سياقات معينة:
-
ISO 8601: تنسيق سلسلة موحد (مثل "2021-01-01T00:00:00Z") يكون سهل القراءة مع الحفاظ على القابلية للفرز. يُفضل غالبًا لتبادل البيانات والتطبيقات الموجهة للمستخدم.
-
RFC 3339: ملف تعريف لـ ISO 8601 يُستخدم في بروتوكولات الإنترنت، مع متطلبات تنسيق أكثر صرامة.
-
التنسيقات سهلة القراءة: سلاسل التواريخ المحلية (مثل "1 يناير 2021") أكثر ملاءمة للتفاعل المباشر مع المستخدم ولكنها أقل ملاءمة للحسابات.
-
Microsoft FILETIME: قيمة 64 بت تمثل عدد الفواصل الزمنية التي تبلغ 100 نانوثانية منذ 1 يناير 1601، تُستخدم في أنظمة Windows.
-
رقم اليوم اليولياني: يُستخدم في علم الفلك وبعض التطبيقات العلمية، حيث يتم حساب الأيام منذ 1 يناير 4713 قبل الميلاد.
يعتمد اختيار تنسيق الوقت على عوامل مثل:
- الدقة المطلوبة
- احتياجات سهولة القراءة
- قيود التخزين
- التوافق مع الأنظمة الحالية
- نطاق التواريخ التي يجب تمثيلها
التاريخ
نشأت فكرة الوقت في نظام يونكس مع تطوير نظام التشغيل يونكس في مختبرات بيل في أواخر الستينيات وأوائل السبعينيات. كان القرار باستخدام 1 يناير 1970 كepoch أمرًا عشوائيًا بعض الشيء ولكنه عملي في ذلك الوقت - كان قريبًا بما يكفي لتقليل متطلبات التخزين لتواريخ الاهتمام ولكن بعيدًا بما يكفي في الماضي ليكون مفيدًا للبيانات التاريخية.
استخدمت التنفيذات الأصلية عددًا صحيحًا موقّعًا 32 بت لتخزين عدد الثواني، وهو ما كان كافيًا لعمر أنظمة يونكس المتوقع في ذلك الوقت. ومع ذلك، أدى هذا القرار إلى مشكلة عام 2038 (المعروفة أحيانًا باسم "Y2K38" أو "خطأ الألفية لنظام يونكس")، حيث لا يمكن للأعداد الصحيحة الموقعة 32 بت تمثيل التواريخ بعد 19 يناير 2038 (03:14:07 بتوقيت UTC).
مع ازدياد شعبية أنظمة يونكس وأنظمة التشغيل المشابهة، أصبحت الطوابع الزمنية لنظام يونكس معيارًا فعليًا لتمثيل الوقت في الحوسبة. تم اعتمادها من قبل العديد من لغات البرمجة وقواعد البيانات والتطبيقات، مما جعلها تمتد بعيدًا عن بيئة يونكس الأصلية.
تستخدم الأنظمة الحديثة بشكل متزايد أعدادًا صحيحة 64 بت للطوابع الزمنية، مما يوسع النطاق القابل للتمثيل إلى حوالي 292 مليار سنة في كلا الاتجاهين من epoch، مما يحل فعليًا مشكلة عام 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 // تحويل إلى سلسلة باستخدام تنسيق locale
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# تحويل الطابع الزمني في Python
2import datetime
3
4def convert_unix_timestamp(timestamp, use_12hour=False):
5 # تحويل الطابع الزمني لنظام يونكس إلى كائن datetime
6 date = datetime.datetime.fromtimestamp(timestamp)
7
8 # تنسيق سلسلة التاريخ
9 if use_12hour:
10 format_string = "%A, %B %d, %Y %I:%M:%S %p" # تنسيق 12 ساعة مع AM/PM
11 else:
12 format_string = "%A, %B %d, %Y %H:%M:%S" # تنسيق 24 ساعة
13
14 return date.strftime(format_string)
15
16# مثال على الاستخدام
17timestamp = 1609459200 # 1 يناير 2021 00:00:00 بتوقيت UTC
18print(convert_unix_timestamp(timestamp, False)) # تنسيق 24 ساعة
19print(convert_unix_timestamp(timestamp, True)) # تنسيق 12 ساعة
20
1<?php
2// تحويل الطابع الزمني في PHP
3function convertUnixTimestamp($timestamp, $use12Hour = false) {
4 // تنسيق السلسلة
5 $formatString = $use12Hour
6 ? 'l, F j, Y g:i:s A' // تنسيق 12 ساعة مع AM/PM
7 : 'l, F j, Y H:i:s'; // تنسيق 24 ساعة
8
9 // تحويل وتنسيق التاريخ
10 return date($formatString, $timestamp);
11}
12
13// مثال على الاستخدام
14$timestamp = 1609459200; // 1 يناير 2021 00:00:00 بتوقيت UTC
15echo convertUnixTimestamp($timestamp, false) . "\n"; // تنسيق 24 ساعة
16echo convertUnixTimestamp($timestamp, true) . "\n"; // تنسيق 12 ساعة
17?>
18
1// تحويل الطابع الزمني في Java
2import java.time.Instant;
3import java.time.LocalDateTime;
4import java.time.ZoneId;
5import java.time.format.DateTimeFormatter;
6
7public class UnixTimestampConverter {
8 public static String convertUnixTimestamp(long timestamp, boolean use12Hour) {
9 // تحويل الطابع الزمني لنظام يونكس إلى Instant، ثم إلى LocalDateTime
10 Instant instant = Instant.ofEpochSecond(timestamp);
11 LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
12
13 // إنشاء المنسق بناءً على التنسيق المطلوب
14 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
15 use12Hour ? "EEEE, MMMM d, yyyy h:mm:ss a" : "EEEE, MMMM d, yyyy HH:mm:ss"
16 );
17
18 // تنسيق التاريخ
19 return dateTime.format(formatter);
20 }
21
22 public static void main(String[] args) {
23 long timestamp = 1609459200; // 1 يناير 2021 00:00:00 بتوقيت UTC
24 System.out.println(convertUnixTimestamp(timestamp, false)); // تنسيق 24 ساعة
25 System.out.println(convertUnixTimestamp(timestamp, true)); // تنسيق 12 ساعة
26 }
27}
28
1// تحويل الطابع الزمني في C#
2using System;
3
4class UnixTimestampConverter
5{
6 public static string ConvertUnixTimestamp(long timestamp, bool use12Hour)
7 {
8 // تحويل الطابع الزمني لنظام يونكس إلى DateTime
9 // الطابع الزمني لنظام يونكس هو ثوانٍ منذ 1970-01-01
10 DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
11
12 // تنسيق السلسلة بناءً على تفضيل 12 ساعة أو 24 ساعة
13 string formatString = use12Hour
14 ? "dddd, MMMM d, yyyy h:mm:ss tt" // تنسيق 12 ساعة مع AM/PM
15 : "dddd, MMMM d, yyyy HH:mm:ss"; // تنسيق 24 ساعة
16
17 // إرجاع سلسلة التاريخ المنسقة
18 return dateTime.ToString(formatString);
19 }
20
21 static void Main()
22 {
23 long timestamp = 1609459200; // 1 يناير 2021 00:00:00 بتوقيت UTC
24 Console.WriteLine(ConvertUnixTimestamp(timestamp, false)); // تنسيق 24 ساعة
25 Console.WriteLine(ConvertUnixTimestamp(timestamp, true)); // تنسيق 12 ساعة
26 }
27}
28
1# تحويل الطابع الزمني في Ruby
2require 'time'
3
4def convert_unix_timestamp(timestamp, use_12hour = false)
5 # تحويل الطابع الزمني لنظام يونكس إلى كائن Time
6 time = Time.at(timestamp)
7
8 # التنسيق بناءً على تفضيل 12 ساعة أو 24 ساعة
9 if use_12hour
10 time.strftime("%A, %B %d, %Y %I:%M:%S %p") # تنسيق 12 ساعة مع AM/PM
11 else
12 time.strftime("%A, %B %d, %Y %H:%M:%S") # تنسيق 24 ساعة
13 end
14end
15
16# مثال على الاستخدام
17timestamp = 1609459200 # 1 يناير 2021 00:00:00 بتوقيت UTC
18puts convert_unix_timestamp(timestamp, false) # تنسيق 24 ساعة
19puts convert_unix_timestamp(timestamp, true) # تنسيق 12 ساعة
20
1// تحويل الطابع الزمني في Go
2package main
3
4import (
5 "fmt"
6 "time"
7)
8
9func convertUnixTimestamp(timestamp int64, use12Hour bool) string {
10 // تحويل الطابع الزمني لنظام يونكس إلى Time
11 t := time.Unix(timestamp, 0)
12
13 // تنسيق السلسلة بناءً على تفضيل 12 ساعة أو 24 ساعة
14 formatString := "Monday, January 2, 2006 "
15 if use12Hour {
16 formatString += "3:04:05 PM" // تنسيق 12 ساعة مع AM/PM
17 } else {
18 formatString += "15:04:05" // تنسيق 24 ساعة
19 }
20
21 // إرجاع الوقت المنسق
22 return t.Format(formatString)
23}
24
25func main() {
26 timestamp := int64(1609459200) // 1 يناير 2021 00:00:00 بتوقيت UTC
27 fmt.Println(convertUnixTimestamp(timestamp, false)) // تنسيق 24 ساعة
28 fmt.Println(convertUnixTimestamp(timestamp, true)) // تنسيق 12 ساعة
29}
30
1// تحويل الطابع الزمني في Swift
2import Foundation
3
4func convertUnixTimestamp(_ timestamp: Int, use12Hour: Bool) -> String {
5 // إنشاء Date من الطابع الزمني لنظام يونكس
6 let date = Date(timeIntervalSince1970: TimeInterval(timestamp))
7
8 // إنشاء DateFormatter
9 let formatter = DateFormatter()
10 formatter.dateStyle = .full
11
12 // تعيين نمط الوقت بناءً على تفضيل 12 ساعة أو 24 ساعة
13 if use12Hour {
14 formatter.timeStyle = .medium
15 formatter.amSymbol = "AM"
16 formatter.pmSymbol = "PM"
17 } else {
18 formatter.timeStyle = .medium
19 formatter.dateFormat = formatter.dateFormat?.replacingOccurrences(of: "h:mm:ss a", with: "HH:mm:ss")
20 }
21
22 // إرجاع التاريخ المنسق
23 return formatter.string(from: date)
24}
25
26// مثال على الاستخدام
27let timestamp = 1609459200 // 1 يناير 2021 00:00:00 بتوقيت UTC
28print(convertUnixTimestamp(timestamp, use12Hour: false)) // تنسيق 24 ساعة
29print(convertUnixTimestamp(timestamp, use12Hour: true)) // تنسيق 12 ساعة
30
1# تحويل الطابع الزمني في R
2convert_unix_timestamp <- function(timestamp, use_12hour = FALSE) {
3 # تحويل الطابع الزمني لنظام يونكس إلى datetime POSIXct
4 date_time <- as.POSIXct(timestamp, origin = "1970-01-01", tz = "UTC")
5
6 # التنسيق بناءً على تفضيل 12 ساعة أو 24 ساعة
7 if (use_12hour) {
8 format_string <- "%A, %B %d, %Y %I:%M:%S %p" # تنسيق 12 ساعة مع AM/PM
9 } else {
10 format_string <- "%A, %B %d, %Y %H:%M:%S" # تنسيق 24 ساعة
11 }
12
13 # إرجاع سلسلة التاريخ المنسقة
14 format(date_time, format_string)
15}
16
17# مثال على الاستخدام
18timestamp <- 1609459200 # 1 يناير 2021 00:00:00 بتوقيت UTC
19cat(convert_unix_timestamp(timestamp, FALSE), "\n") # تنسيق 24 ساعة
20cat(convert_unix_timestamp(timestamp, TRUE), "\n") # تنسيق 12 ساعة
21
1% تحويل الطابع الزمني في MATLAB
2function formattedDate = convertUnixTimestamp(timestamp, use12Hour)
3 % تحويل الطابع الزمني لنظام يونكس إلى datetime MATLAB
4 % تواريخ MATLAB هي أيام منذ 1900-01-01، حيث 1 = 1900-01-01
5 % الطابع الزمني لنظام يونكس هو ثوانٍ منذ 1970-01-01
6
7 % أولاً تحويل إلى تنسيق التاريخ في MATLAB
8 % 25569 هو عدد الأيام بين 1900-01-01 و1970-01-01
9 excelDate = (timestamp / 86400) + 25569;
10
11 % تنسيق التاريخ بناءً على تفضيل 12 ساعة أو 24 ساعة
12 if use12Hour
13 formattedDate = datestr(excelDate, 'dddd, mmmm d, yyyy h:mm:ss AM/PM');
14 else
15 formattedDate = datestr(excelDate, 'dddd, mmmm d, yyyy HH:mm:ss');
16 end
17end
18
19% مثال على الاستخدام
20timestamp = 1609459200; % 1 يناير 2021 00:00:00 بتوقيت UTC
21disp(convertUnixTimestamp(timestamp, false)) % تنسيق 24 ساعة
22disp(convertUnixTimestamp(timestamp, true)) % تنسيق 12 ساعة
23
1' تحويل الطابع الزمني في Excel VBA
2Function ConvertUnixTimestamp(timestamp As Long, Optional use12Hour As Boolean = False) As String
3 ' تحويل الطابع الزمني لنظام يونكس إلى تاريخ/وقت Excel
4 ' تواريخ Excel هي أيام منذ 1900-01-01، حيث 1 = 1900-01-01
5 ' الطابع الزمني لنظام يونكس هو ثوانٍ منذ 1970-01-01
6
7 ' أولاً تحويل إلى تنسيق تاريخ Excel
8 ' 25569 هو عدد الأيام بين 1900-01-01 و1970-01-01
9 Dim excelDate As Double
10 excelDate = (timestamp / 86400) + 25569
11
12 ' تنسيق التاريخ بناءً على تفضيل 12 ساعة أو 24 ساعة
13 If use12Hour Then
14 ConvertUnixTimestamp = Format(excelDate, "dddd, mmmm d, yyyy h:mm:ss AM/PM")
15 Else
16 ConvertUnixTimestamp = Format(excelDate, "dddd, mmmm d, yyyy hh:mm:ss")
17 End If
18End Function
19
20' الاستخدام في ورقة العمل:
21' =ConvertUnixTimestamp(1609459200, TRUE) ' تنسيق 12 ساعة
22' =ConvertUnixTimestamp(1609459200, FALSE) ' تنسيق 24 ساعة
23
معالجة الحالات الحدية
عند العمل مع الطوابع الزمنية لنظام يونكس، من المهم معالجة الحالات الحدية بشكل صحيح. إليك أمثلة على معالجة بعض الحالات الحدية الشائعة:
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
المراجع
-
"وقت يونكس." ويكيبيديا، مؤسسة ويكيميديا، https://en.wikipedia.org/wiki/Unix_time
-
"مشكلة عام 2038." ويكيبيديا، مؤسسة ويكيميديا، https://en.wikipedia.org/wiki/Year_2038_problem
-
أولسون، آرثر ديفيد. "تعقيدات الوقت التقويمي." مجموعة Open، https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf
-
"ISO 8601." ويكيبيديا، مؤسسة ويكيميديا، https://en.wikipedia.org/wiki/ISO_8601
-
"RFC 3339: التاريخ والوقت على الإنترنت: الطوابع الزمنية." مجموعة هندسة الإنترنت (IETF)، https://tools.ietf.org/html/rfc3339
-
كيرنيغان، بريان و.، ودينيس م. ريتشي. "لغة البرمجة C." برنتيس هول، 1988.
الملاحظات
انقر على إشعار الملاحظات لبدء إعطاء ملاحظات حول هذه الأداة
أدوات ذات صلة
اكتشف المزيد من الأدوات التي قد تكون مفيدة لعملك