مبدل تایماستمپ یونیکس به تاریخ: پشتیبانی از فرمت ۱۲/۲۴ ساعته
تایماستمپهای یونیکس را به تاریخ و زمان قابل خواندن برای انسان تبدیل کنید. با این ابزار مبدل ساده و کاربرپسند، بین فرمتهای زمانی ۱۲ ساعته و ۲۴ ساعته انتخاب کنید.
مبدل زمان یونیکس
تاریخ و زمان تبدیل شده
مستندات
مبدل زمان یونیکس
مقدمه
زمان یونیکس (که به عنوان زمان POSIX یا زمان Epoch نیز شناخته میشود) سیستمی برای توصیف یک نقطه در زمان است. این زمان تعداد ثانیههایی است که از ۱ ژانویه ۱۹۷۰ (نیمه شب UTC/GMT) گذشته است و ثانیههای کبیسه را در نظر نمیگیرد. زمانهای یونیکس به طور گستردهای در سیستمهای کامپیوتری و زبانهای برنامهنویسی استفاده میشوند زیرا نمایشی فشرده و مستقل از زبان از یک لحظه خاص در زمان را فراهم میکنند.
این مبدل به شما امکان میدهد تا زمان یونیکس را به فرمت تاریخ و زمان قابل خواندن برای انسان تبدیل کنید. این مبدل از هر دو فرمت زمان ۱۲ ساعته (AM/PM) و ۲۴ ساعته پشتیبانی میکند تا نیازهای منطقهای و شخصی مختلف را برآورده کند.
نحوه کار زمانهای یونیکس
زمانهای یونیکس به عنوان تعداد ثانیهها از زمان Epoch یونیکس (۱ ژانویه ۱۹۷۰، ۰۰:۰۰:۰۰ UTC) محاسبه میشوند. این امر آنها را برای محاسبه تفاوتهای زمانی و ذخیره تاریخها در یک فرمت فشرده، به ویژه مفید میسازد.
فرمول ریاضی تبدیل از زمان یونیکس به تاریخ تقویمی شامل چند مرحله است:
۱. با Epoch یونیکس (۱ ژانویه ۱۹۷۰، ۰۰:۰۰:۰۰ UTC) شروع کنید ۲. تعداد ثانیههای موجود در زمان را اضافه کنید ۳. سالهای کبیسه، طولهای متغیر ماهها و دیگر پیچیدگیهای تقویمی را در نظر بگیرید ۴. در صورت نیاز، تنظیمات منطقه زمانی را اعمال کنید
به عنوان مثال، زمان یونیکس ۱۶۰۹۴۵۹۲۰۰
نمایانگر جمعه، ۱ ژانویه ۲۰۲۱، ۰۰:۰۰:۰۰ UTC است.
فرمول تبدیل را میتوان به صورت زیر بیان کرد:
بیشتر زبانهای برنامهنویسی و سیستمهای عامل توابع داخلی برای مدیریت این تبدیل ارائه میدهند و محاسبات پیچیده تقویمی را پنهان میکنند.
گزینههای فرمت زمان
این مبدل دو گزینه فرمت زمان را ارائه میدهد:
۱. فرمت ۲۴ ساعته (که گاهی اوقات "زمان نظامی" نامیده میشود): ساعتها از ۰ تا ۲۳ متغیر است و هیچ نشانه AM/PM وجود ندارد. به عنوان مثال، ۳:۰۰ بعد از ظهر به صورت ۱۵:۰۰ نمایش داده میشود.
۲. فرمت ۱۲ ساعته: ساعتها از ۱ تا ۱۲ متغیر است، با AM (ante meridiem) برای زمانهای از نیمه شب تا ظهر و PM (post meridiem) برای زمانهای از ظهر تا نیمه شب. به عنوان مثال، ۱۵:۰۰ در فرمت ۲۴ ساعته به صورت ۳:۰۰ بعد از ظهر نمایش داده میشود.
انتخاب بین این فرمتها به طور عمده به کنوانسیونهای منطقهای و ترجیحات شخصی بستگی دارد:
- فرمت ۲۴ ساعته به طور معمول در بیشتر اروپا، آمریکای لاتین و آسیا، و همچنین در زمینههای علمی، نظامی و پزشکی در سراسر جهان استفاده میشود.
- فرمت ۱۲ ساعته در ایالات متحده، کانادا، استرالیا و برخی دیگر از کشورهای انگلیسی زبان برای استفاده روزمره رایج است.
موارد حاشیهای و محدودیتها
هنگام کار با زمانهای یونیکس، مهم است که از چندین مورد حاشیهای و محدودیتها آگاه باشید:
۱. زمانهای منفی: اینها تاریخهایی را قبل از Epoch یونیکس (۱ ژانویه ۱۹۷۰) نمایان میکنند. در حالی که از نظر ریاضی معتبر هستند، برخی سیستمها ممکن است زمانهای منفی را به درستی مدیریت نکنند.
۲. مشکل سال ۲۰۳۸: زمانهای یونیکس معمولاً به عنوان اعداد صحیح ۳۲ بیتی ذخیره میشوند که در ۱۹ ژانویه ۲۰۳۸ سرریز خواهد شد. پس از این تاریخ، سیستمهای ۳۲ بیتی قادر به نمایندگی صحیح زمانها نخواهند بود مگر اینکه به نوع عدد صحیح بزرگتری تغییر یابند.
۳. زمانهای بسیار بزرگ: تاریخهای بسیار دور در آینده ممکن است در برخی سیستمها قابل نمایندگی نباشند یا به طور نامنظم مدیریت شوند.
۴. ثانیههای کبیسه: زمان یونیکس ثانیههای کبیسه را در نظر نمیگیرد، که به طور گاهبهگاه به UTC اضافه میشوند تا از چرخش نامنظم زمین جبران کند. این بدان معناست که زمان یونیکس به طور دقیق با زمان نجومی همزمان نیست.
۵. ملاحظات منطقه زمانی: زمانهای یونیکس لحظاتی را در UTC نمایان میکنند. تبدیل به زمان محلی نیاز به اطلاعات منطقه زمانی اضافی دارد.
۶. صرفهجویی در نور روز: هنگام تبدیل زمانها به زمان محلی، باید پیچیدگیهای انتقالهای صرفهجویی در نور روز را در نظر گرفت.
موارد استفاده
زمانهای یونیکس در برنامههای متعددی در سراسر محاسبات و مدیریت دادهها استفاده میشوند:
۱. سوابق پایگاه داده: زمانها معمولاً برای ثبت زمان ایجاد یا ویرایش ورودیها استفاده میشوند.
۲. توسعه وب: هدرهای HTTP، کوکیها و مکانیزمهای کش معمولاً از زمانهای یونیکس استفاده میکنند.
۳. فایلهای گزارش: گزارشهای سیستم معمولاً رویدادها را با زمانهای یونیکس ثبت میکنند تا ترتیب زمانی دقیقی داشته باشند.
۴. سیستمهای کنترل نسخه: Git و دیگر سیستمهای VCS از زمانها برای ثبت زمانی که کامیتها انجام شدهاند، استفاده میکنند.
۵. پاسخهای API: بسیاری از APIهای وب شامل زمانها در پاسخهای خود برای نشان دادن زمانی که دادهها تولید شدهاند یا منابع آخرین بار تغییر یافتهاند، میباشند.
۶. سیستمهای فایل: زمانهای ایجاد و ویرایش فایل معمولاً به عنوان زمانهای یونیکس ذخیره میشوند.
۷. مدیریت جلسه: برنامههای وب از زمانها برای تعیین اینکه چه زمانی باید جلسات کاربر منقضی شوند، استفاده میکنند.
۸. تحلیل داده: زمانها یک روش استاندارد برای کار با دادههای زمانی در برنامههای تحلیلی فراهم میکنند.
جایگزینها
در حالی که زمانهای یونیکس به طور گستردهای استفاده میشوند، فرمتهای نمایشی زمان جایگزین دیگری وجود دارد که ممکن است در برخی زمینهها مناسبتر باشد:
۱. ISO 8601: یک فرمت رشتهای استاندارد (به عنوان مثال، "۲۰۲۱-۰۱-۰۱T۰۰:۰۰:۰۰Z") که قابل خواندن برای انسان است و در عین حال قابلیت مرتبسازی را حفظ میکند. این فرمت معمولاً برای تبادل داده و برنامههای کاربر پسند ترجیح داده میشود.
۲. RFC 3339: یک پروفایل از ISO 8601 که در پروتکلهای اینترنتی استفاده میشود و الزامات فرمتگذاری سختتری دارد.
۳. فرمتهای قابل خواندن برای انسان: رشتههای تاریخ محلی (به عنوان مثال، "۱ ژانویه ۲۰۲۱") برای تعامل مستقیم با کاربر مناسبتر هستند اما برای محاسبات کمتر مناسباند.
۴. FILETIME مایکروسافت: یک مقدار ۶۴ بیتی که تعداد دورههای ۱۰۰ نانوثانیهای از ۱ ژانویه ۱۶۰۱ را نمایان میکند و در سیستمهای ویندوز استفاده میشود.
۵. عدد روز جولین: در نجوم و برخی برنامههای علمی استفاده میشود و روزها را از ۱ ژانویه ۴۷۱۳ قبل از میلاد شمارش میکند.
انتخاب فرمت زمان بستگی به عواملی مانند:
- دقت مورد نیاز
- نیازهای قابل خواندن برای انسان
- محدودیتهای ذخیرهسازی
- سازگاری با سیستمهای موجود
- دامنه تاریخهایی که باید نمایان شوند
تاریخچه
مفهوم زمان یونیکس با توسعه سیستم عامل یونیکس در آزمایشگاههای بل در اواخر دهه ۱۹۶۰ و اوایل دهه ۱۹۷۰ به وجود آمد. تصمیم به استفاده از ۱ ژانویه ۱۹۷۰ به عنوان Epoch تا حدی دلخواه بود اما برای آن زمان عملی بود - این تاریخ به اندازه کافی نزدیک بود تا نیاز به ذخیرهسازی تاریخهای مورد علاقه را کاهش دهد اما به اندازه کافی دور بود تا برای دادههای تاریخی مفید باشد.
پیادهسازی اولیه از یک عدد صحیح ۳۲ بیتی برای ذخیره تعداد ثانیهها استفاده میکرد که برای عمر مورد انتظار سیستمهای یونیکس در آن زمان کافی بود. با این حال، این تصمیم منجر به مشکل سال ۲۰۳۸ (که گاهی اوقات به آن "Y2K38" یا "بگ یونیکس هزاره" میگویند) شد، زیرا اعداد صحیح ۳۲ بیتی تنها میتوانند تاریخها را تا ۱۹ ژانویه ۲۰۳۸ نمایان کنند (۰۳:۱۴:۰۷ UTC).
با محبوبیت یافتن یونیکس و سیستمهای مشابه یونیکس، زمان یونیکس به یک استاندارد غیررسمی برای نمایندگی زمان در محاسبات تبدیل شد. این استاندارد توسط زبانهای برنامهنویسی، پایگاههای داده و برنامههای متعددی پذیرفته شد و فراتر از محیط اصلی یونیکس گسترش یافت.
سیستمهای مدرن به طور فزایندهای از اعداد صحیح ۶۴ بیتی برای زمانها استفاده میکنند که دامنه قابل نمایندگی را به حدود ۲۹۲ میلیارد سال در هر دو جهت از Epoch گسترش میدهد و به طور مؤثری مشکل سال ۲۰۳۸ را حل میکند. با این حال، سیستمها و برنامههای قدیمی ممکن است هنوز در معرض خطر باشند.
سادگی و کارایی زمان یونیکس باعث شده است که این مفهوم همچنان مرتبط بماند، با وجود توسعه فرمتهای نمایشی زمان پیچیدهتر. این مفهوم همچنان یک مفهوم اساسی در محاسبات است که زیرساخت دیجیتال ما را تشکیل میدهد.
مثالهای کد
در اینجا مثالهایی از نحوه تبدیل زمانهای یونیکس به تاریخهای قابل خواندن برای انسان در زبانهای مختلف برنامهنویسی آورده شده است:
1// تبدیل زمان در جاوااسکریپت
2function convertUnixTimestamp(timestamp, use12Hour = false) {
3 // ایجاد یک شیء تاریخ جدید (جاوااسکریپت از میلیثانیهها استفاده میکند)
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; // ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
24console.log(convertUnixTimestamp(timestamp, false)); // فرمت ۲۴ ساعته
25console.log(convertUnixTimestamp(timestamp, true)); // فرمت ۱۲ ساعته
26
1# تبدیل زمان در پایتون
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" # فرمت ۱۲ ساعته با AM/PM
11 else:
12 format_string = "%A, %B %d, %Y %H:%M:%S" # فرمت ۲۴ ساعته
13
14 return date.strftime(format_string)
15
16# مثال استفاده
17timestamp = 1609459200 # ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
18print(convert_unix_timestamp(timestamp, False)) # فرمت ۲۴ ساعته
19print(convert_unix_timestamp(timestamp, True)) # فرمت ۱۲ ساعته
20
1<?php
2// تبدیل زمان در PHP
3function convertUnixTimestamp($timestamp, $use12Hour = false) {
4 // فرمت رشته
5 $formatString = $use12Hour
6 ? 'l, F j, Y g:i:s A' // فرمت ۱۲ ساعته با AM/PM
7 : 'l, F j, Y H:i:s'; // فرمت ۲۴ ساعته
8
9 // تبدیل و فرمت تاریخ
10 return date($formatString, $timestamp);
11}
12
13// مثال استفاده
14$timestamp = 1609459200; // ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
15echo convertUnixTimestamp($timestamp, false) . "\n"; // فرمت ۲۴ ساعته
16echo convertUnixTimestamp($timestamp, true) . "\n"; // فرمت ۱۲ ساعته
17?>
18
1// تبدیل زمان در جاوا
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; // ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
24 System.out.println(convertUnixTimestamp(timestamp, false)); // فرمت ۲۴ ساعته
25 System.out.println(convertUnixTimestamp(timestamp, true)); // فرمت ۱۲ ساعته
26 }
27}
28
1// تبدیل زمان در C#
2using System;
3
4class UnixTimestampConverter
5{
6 public static string ConvertUnixTimestamp(long timestamp, bool use12Hour)
7 {
8 // تبدیل زمان یونیکس به DateTime
9 // زمان یونیکس ثانیهها از ۱۹۷۰-۰۱-۰۱ است
10 DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
11
12 // فرمت رشته بر اساس ترجیح ۱۲ ساعته یا ۲۴ ساعته
13 string formatString = use12Hour
14 ? "dddd, MMMM d, yyyy h:mm:ss tt" // فرمت ۱۲ ساعته با AM/PM
15 : "dddd, MMMM d, yyyy HH:mm:ss"; // فرمت ۲۴ ساعته
16
17 // بازگشت رشته تاریخ فرمت شده
18 return dateTime.ToString(formatString);
19 }
20
21 static void Main()
22 {
23 long timestamp = 1609459200; // ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
24 Console.WriteLine(ConvertUnixTimestamp(timestamp, false)); // فرمت ۲۴ ساعته
25 Console.WriteLine(ConvertUnixTimestamp(timestamp, true)); // فرمت ۱۲ ساعته
26 }
27}
28
1# تبدیل زمان در روبی
2require 'time'
3
4def convert_unix_timestamp(timestamp, use_12hour = false)
5 # تبدیل زمان یونیکس به شیء Time
6 time = Time.at(timestamp)
7
8 # فرمت بر اساس ترجیح ۱۲ ساعته یا ۲۴ ساعته
9 if use_12hour
10 time.strftime("%A, %B %d, %Y %I:%M:%S %p") # فرمت ۱۲ ساعته با AM/PM
11 else
12 time.strftime("%A, %B %d, %Y %H:%M:%S") # فرمت ۲۴ ساعته
13 end
14end
15
16# مثال استفاده
17timestamp = 1609459200 # ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
18puts convert_unix_timestamp(timestamp, false) # فرمت ۲۴ ساعته
19puts convert_unix_timestamp(timestamp, true) # فرمت ۱۲ ساعته
20
1// تبدیل زمان در گو
2package main
3
4import (
5 "fmt"
6 "time"
7)
8
9func convertUnixTimestamp(timestamp int64, use12Hour bool) string {
10 // تبدیل زمان یونیکس به زمان
11 t := time.Unix(timestamp, 0)
12
13 // فرمت رشته بر اساس ترجیح ۱۲ ساعته یا ۲۴ ساعته
14 formatString := "Monday, January 2, 2006 "
15 if use12Hour {
16 formatString += "3:04:05 PM" // فرمت ۱۲ ساعته با AM/PM
17 } else {
18 formatString += "15:04:05" // فرمت ۲۴ ساعته
19 }
20
21 // بازگشت زمان فرمت شده
22 return t.Format(formatString)
23}
24
25func main() {
26 timestamp := int64(1609459200) // ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
27 fmt.Println(convertUnixTimestamp(timestamp, false)) // فرمت ۲۴ ساعته
28 fmt.Println(convertUnixTimestamp(timestamp, true)) // فرمت ۱۲ ساعته
29}
30
1// تبدیل زمان در سوئیفت
2import Foundation
3
4func convertUnixTimestamp(_ timestamp: Int, use12Hour: Bool) -> String {
5 // ایجاد تاریخ از زمان یونیکس
6 let date = Date(timeIntervalSince1970: TimeInterval(timestamp))
7
8 // ایجاد DateFormatter
9 let formatter = DateFormatter()
10 formatter.dateStyle = .full
11
12 // تنظیم سبک زمان بر اساس ترجیح ۱۲ ساعته یا ۲۴ ساعته
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 // ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
28print(convertUnixTimestamp(timestamp, use12Hour: false)) // فرمت ۲۴ ساعته
29print(convertUnixTimestamp(timestamp, use12Hour: true)) // فرمت ۱۲ ساعته
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 # فرمت بر اساس ترجیح ۱۲ ساعته یا ۲۴ ساعته
7 if (use_12hour) {
8 format_string <- "%A, %B %d, %Y %I:%M:%S %p" # فرمت ۱۲ ساعته با AM/PM
9 } else {
10 format_string <- "%A, %B %d, %Y %H:%M:%S" # فرمت ۲۴ ساعته
11 }
12
13 # بازگشت رشته تاریخ فرمت شده
14 format(date_time, format_string)
15}
16
17# مثال استفاده
18timestamp <- 1609459200 # ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
19cat(convert_unix_timestamp(timestamp, FALSE), "\n") # فرمت ۲۴ ساعته
20cat(convert_unix_timestamp(timestamp, TRUE), "\n") # فرمت ۱۲ ساعته
21
1% تبدیل زمان در MATLAB
2function formattedDate = convertUnixTimestamp(timestamp, use12Hour)
3 % تبدیل زمان یونیکس به datetime MATLAB
4 % تاریخهای MATLAB روزهایی از ۱۹۰۰-۰۱-۰۱ هستند، با ۱ = ۱۹۰۰-۰۱-۰۱
5 % زمانهای یونیکس ثانیههایی از ۱۹۷۰-۰۱-۰۱ هستند
6
7 % ابتدا تبدیل به فرمت تاریخ MATLAB
8 % ۲۵۵۶۹ تعداد روزها بین ۱۹۰۰-۰۱-۰۱ و ۱۹۷۰-۰۱-۰۱ است
9 excelDate = (timestamp / 86400) + 25569;
10
11 % فرمت تاریخ بر اساس ترجیح ۱۲ ساعته یا ۲۴ ساعته
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; % ۱ ژانویه ۲۰۲۱ ۰۰:۰۰:۰۰ UTC
21disp(convertUnixTimestamp(timestamp, false)) % فرمت ۲۴ ساعته
22disp(convertUnixTimestamp(timestamp, true)) % فرمت ۱۲ ساعته
23
1' تبدیل زمان در VBA اکسل
2Function ConvertUnixTimestamp(timestamp As Long, Optional use12Hour As Boolean = False) As String
3 ' تبدیل زمان یونیکس به تاریخ/زمان اکسل
4 ' تاریخهای اکسل روزهایی از ۱۹۰۰-۰۱-۰۱ هستند، با ۱ = ۱۹۰۰-۰۱-۰۱
5 ' زمانهای یونیکس ثانیههایی از ۱۹۷۰-۰۱-۰۱ هستند
6
7 ' ابتدا تبدیل به فرمت تاریخ اکسل
8 ' ۲۵۵۶۹ تعداد روزها بین ۱۹۰۰-۰۱-۰۱ و ۱۹۷۰-۰۱-۰۱ است
9 Dim excelDate As Double
10 excelDate = (timestamp / 86400) + 25569
11
12 ' فرمت تاریخ بر اساس ترجیح ۱۲ ساعته یا ۲۴ ساعته
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) ' فرمت ۱۲ ساعته
22' =ConvertUnixTimestamp(1609459200, FALSE) ' فرمت ۲۴ ساعته
23
مدیریت موارد حاشیهای
هنگام کار با زمانهای یونیکس، مهم است که موارد حاشیهای را به درستی مدیریت کنید. در اینجا مثالهایی از مدیریت برخی موارد حاشیهای رایج آورده شده است:
1// مدیریت موارد حاشیهای در جاوااسکریپت
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3 // بررسی اینکه آیا زمان معتبر است
4 if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
5 return "زمان نامعتبر";
6 }
7
8 // بررسی زمانهای منفی (تاریخهای قبل از ۱۹۷۰)
9 if (timestamp < 0) {
10 // برخی مرورگرها ممکن است زمانهای منفی را به درستی مدیریت نکنند
11 // از رویکردی قویتر برای تاریخهای قبل از ۱۹۷۰ استفاده کنید
12 const date = new Date(timestamp * 1000);
13 if (isNaN(date.getTime())) {
14 return "تاریخ نامعتبر (قبل از ۱۹۷۰)";
15 }
16 }
17
18 // بررسی مشکل Y2K38 (برای سیستمهای ۳۲ بیتی)
19 const maxInt32 = 2147483647; // حداکثر مقدار برای عدد صحیح ۳۲ بیتی
20 if (timestamp > maxInt32) {
21 // در نظر بگیرید که برای زمانهای بسیار بزرگ از BigInt در جاوااسکریپت مدرن استفاده کنید
22 console.warn("زمان از حد مجاز عدد صحیح ۳۲ بیتی فراتر میرود (مشکل 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
۲. "مشکل سال ۲۰۳۸." ویکیپدیا، بنیاد ویکیمدیا، https://en.wikipedia.org/wiki/Year_2038_problem
۳. اولسون، آرتور دیوید. "پیچیدگیهای زمان تقویمی." گروه باز، 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." انتشارات پرنتیس هال، ۱۹۸۸.
بازخورد
برای شروع دادن بازخورد درباره این ابزار، روی نوار بازخورد کلیک کنید
ابزارهای مرتبط
ابزارهای بیشتری را کشف کنید که ممکن است برای جریان کار شما مفید باشند