تایماستمپ در دیسکورد: نحو، استایلها و مثالها
تایماستمپ دیسکورد یک زمان یونیکس بر حسب ثانیه بهعلاوه یک حرف استایل است، و هر خواننده آن را در منطقه زمانی و قالب محلی خودش میبیند.
اگر در سروری که اعضایش در چند قاره پراکندهاند بنویسید «رویداد ساعت ۸ شب شروع میشود»، سردرگمی تضمینشده است. دیسکورد این مشکل را با یک نشانهگذاری کوچک حل میکند: لحظه موردنظر را به شکل یک تایماستمپ یونیکس داخل <t:...> بنویسید، و کلاینت دیسکورد هر خواننده آن را به منطقه زمانی خود او تبدیل میکند و با قالب محلیاش نمایش میدهد. شما یک مقدار تایپ میکنید؛ همه زمان محلی درست را میبینند.
نحو
تایماستمپ دو شکل دارد:
<t:TIMESTAMP>
<t:TIMESTAMP:STYLE>
TIMESTAMP زمان یونیکس است: تعداد ثانیهها از ۱ ژانویه ۱۹۷۰ به وقت UTC، مثلاً 1790892000. STYLE یک حرف تکی است که قالب نمایش را انتخاب میکند. اگر آن را ننویسید، دیسکورد از f استفاده میکند؛ پس <t:1790892000> و <t:1790892000:f> به یک شکل نمایش داده میشوند. این حرف به بزرگی و کوچکی حساس است: d و D دو استایل متفاوتاند.
همه استایلهای تایماستمپ
مستندات توسعهدهندگان دیسکورد نُه استایل را فهرست کرده است. نامها و نمونه خروجیهای جدول زیر همانهایی هستند که در این مستندات آمدهاند. بسیاری از راهنماهای قدیمیتر فقط هفت استایل را ذکر میکنند و s و S را از قلم میاندازند.
| نشانهگذاری | نام در مستندات دیسکورد | چه چیزی نشان میدهد | مثال مستندات |
|---|---|---|---|
<t:TIMESTAMP:t> | Short Time | ساعت و دقیقه | 16:20 |
<t:TIMESTAMP:T> | Medium Time | ساعت، دقیقه و ثانیه | 16:20:30 |
<t:TIMESTAMP:d> | Short Date | تاریخ عددی | 20/04/2021 |
<t:TIMESTAMP:D> | Long Date | تاریخ با نام کامل ماه | April 20, 2021 |
<t:TIMESTAMP:f> | Long Date, Short Time (پیشفرض) | تاریخ بلند بهعلاوه ساعت و دقیقه | April 20, 2021 at 16:20 |
<t:TIMESTAMP:F> | Full Date, Short Time | روز هفته را هم اضافه میکند | Tuesday, April 20, 2021 at 16:20 |
<t:TIMESTAMP:s> | Short Date, Short Time | تاریخ عددی بهعلاوه ساعت و دقیقه | 20/04/2021, 16:20 |
<t:TIMESTAMP:S> | Short Date, Medium Time | تاریخ عددی بهعلاوه زمان با ثانیه | 20/04/2021, 16:20:30 |
<t:TIMESTAMP:R> | Relative Time | فاصله از اکنون | 4 years ago |
این مثالها یک الگو را نشان میدهند، نه متن دقیقی که هر خواننده میبیند. دیسکورد میگوید تایماستمپها در منطقه زمانی و زبان و منطقه (locale) کاربر نمایش داده میشوند؛ پس ترتیب روز و ماه، جداکنندهها، نام ماهها و ساعت ۱۲ یا ۲۴ ساعته از خوانندهای به خواننده دیگر فرق میکند. R در لحظهای که پیام دیده میشود محاسبه میشود، و همین آن را به استایل مناسب برای شمارش معکوس و ضربالاجل تبدیل میکند: یک زمان آینده چیزی شبیه «in 3 hours» (سه ساعت دیگر) خوانده میشود.
یک عدد، همه منطقههای زمانی
تایماستمپ یونیکس یک لحظه مشخص را نشان میدهد، نه ساعتی که روی دیوار دیده میشود. 1790892000 برابر است با ساعت ۲۲:۰۰ به وقت UTC در ۱ اکتبر ۲۰۲۶، و تایماستمپی که از آن ساخته شود، به هر خواننده زمان محلی خودش را نشان میدهد:
| محل خواننده | زمان محلی نمایشدادهشده |
|---|---|
| نیویورک | ۱۸:۰۰ روز ۱ اکتبر (۶:۰۰ عصر) |
| لندن | ۲۳:۰۰ روز ۱ اکتبر |
| کلکته | ۰۳:۳۰ روز ۲ اکتبر |
| توکیو | ۰۷:۰۰ روز ۲ اکتبر |
تبدیل در سمت خواننده خودکار است. تنها جایی که خطا ممکن است وارد شود، سمت شماست: اینکه در وهله اول «ساعت ۶ عصر در نیویورک» را به عدد درست تبدیل کنید.
گرفتن تایماستمپ یونیکس
سریعترین راه، مبدل تایماستمپ یونیکس است. اگر رویداد در ساعت دستگاه خودتان است، زبانه دیسکورد را باز کنید، تاریخ و ساعت را انتخاب کنید یا درج زمان فعلی را بزنید؛ جدول همه استایلها را یکجا میدهد: نام استایل، کد آماده <t:...> در ستون کد همراه دکمه کپی، و پیشنمایشی در ستون اینطور دیده میشود. این زبانه ساعت را در منطقه زمانی دستگاه خودتان میخواند و منوی منطقه زمانی را نادیده میگیرد؛ پس اگر رویداد جای دیگری برنامهریزی شده، اول عدد را به دست آورید:
- از منوی منطقه زمانی، منطقهای را که رویداد بر اساس آن برنامهریزی شده انتخاب کنید. این منو روی منطقه زمانی خود شما تنظیم شده و منطقههای IANA را که مرورگرتان پشتیبانی میکند، مثل America/New_York، فهرست میکند.
- در پنل تاریخ ← تایماستمپ، تاریخ و ساعت را انتخاب کنید و روی تبدیل کلیک کنید.
- مقدار ثانیه را کپی کنید، نه مقدار میلیثانیه را، و آن را داخل
<t:...:F>یا هر استایلی که میخواهید بچسبانید. - برای اطمینان، عدد را در پنل تایماستمپ ← تاریخ بچسبانید و آن را به وقت UTC، در هر منطقه زمانی دلخواه و به شکل زمان نسبی بازخوانی کنید.
نوار ابزار این مبدل تایماستمپ یونیکس فعلی را هم همراه با دکمه کپی نشان میدهد، که برای پیامهایی مثل «ارسالشده در» یا «همین حالا شروع میشود» کاربردی است. برای یک برنامه کامل، زبانه دستهای در هر خط یک تایماستمپ یا تاریخ میگیرد، تا ۵۰۰ خط، و کپی بهصورت CSV جدول را به صفحهگسترده میبرد. زبانه کد هم تبدیل تایماستمپ روی صفحه را در هشت زبان مینویسد، که پاورشل میانشان نیست. در کد، همه این دستورها برای ساعت ۶ عصر روز ۱ اکتبر ۲۰۲۶ با اختلاف UTC−4 (وقت تابستانی نیویورک) مقدار 1790892000 را تولید کردند:
// JavaScript
Math.floor(Date.now() / 1000) // now, in seconds
Date.parse('2026-10-01T18:00:00-04:00') / 1000 // 1790892000
# Python
import time
from datetime import datetime, timedelta, timezone
int(time.time()) # now, in seconds
int(datetime(2026, 10, 1, 18, 0,
tzinfo=timezone(timedelta(hours=-4))).timestamp()) # 1790892000
# Linux shell (GNU date)
date +%s
date -d '2026-10-01 18:00 -0400' +%s # 1790892000
# PowerShell
[DateTimeOffset]::UtcNow.ToUnixTimeSeconds()
[DateTimeOffset]::new(2026, 10, 1, 18, 0, 0, [TimeSpan]::FromHours(-4)).ToUnixTimeSeconds()
در هر زبان، خط اول زمان فعلی را بر حسب ثانیه میدهد و خط دوم همان لحظه مشخص را. یک اختلاف ثابت مثل -04:00 فقط برای بخشی از سال درست است. نیویورک در ۱ نوامبر ۲۰۲۶ به UTC−5 تغییر میکند، پس برای تاریخهای بعد از آن، همان ساعت دیواری به -05:00 نیاز دارد. تبدیل با یک منطقه زمانی نامدار این مشکل را برطرف میکند: منوی منطقه زمانی مبدل همین کار را میکند و zoneinfo.ZoneInfo("America/New_York") در Python هم همینطور. در ویندوز، Python برای این کار به بسته tzdata نیاز دارد؛ بدون آن با خطای ZoneInfoNotFoundError روبهرو شدیم.
مثالهایی که میتوانید بچسبانید
Maintenance starts <t:1790892000:F> (<t:1790892000:R>).
Tournament check-in closes at <t:1790892000:t>.
Applications are open until <t:1790892000:D>.
این سه خط به ترتیب زمان شروع تعمیرات، بسته شدن ثبت حضور در یک مسابقه و آخرین مهلت ارسال درخواست را اعلام میکنند. ترکیب تاریخ کامل با زمان نسبی، مثل خط اول، هم لحظه دقیق را به خوانندگان نشان میدهد و هم اینکه چقدر وقت دارند. اگر بخواهید خود نشانهگذاری را نشان دهید و نه تاریخ نمایشدادهشده را، مثلاً وقتی آن را برای اعضای دیگر توضیح میدهید، آن را داخل بکتیک (`) بگذارید تا دیسکورد آن را به شکل کد نمایش دهد.
اشتباههای رایج
- میلیثانیه بهجای ثانیه.
Date.now()در JavaScript میلیثانیه برمیگرداند که در حال حاضر ۱۳ رقم است؛ زمان یونیکس بر حسب ثانیه تا سال ۲۲۸۶ ده رقم دارد. اگر1790892000000را ثانیه بخوانید، تاریخی بیش از ۵۰٬۰۰۰ سال بعد به دست میآید. عدد را بر ۱۰۰۰ تقسیم کنید و به پایین گرد کنید. - تجزیه تاریخ بدون منطقه زمانی. در JavaScript،
new Date('2026-10-01T18:00')از منطقه زمانی ماشینی که کد را اجرا میکند استفاده میکند، که برای رباتی که روی سرور میزبانی میشود اغلب UTC است نه منطقه زمانی شما؛ در حالی که رشتهای که فقط تاریخ دارد، مثل'2026-10-01'، نیمهشب به وقت UTC خوانده میشود. همیشه اختلاف ساعت را بنویسید یا با یک منطقه زمانی نامدار تبدیل کنید. - تبدیل در منطقه زمانی اشتباه. اگر رویدادی را برای ساعت ۲۰:۰۰ در برلین برنامهریزی کنید اما ساعت ۲۰:۰۰ منطقه زمانی خودتان را تبدیل کنید، همه خوانندگان زمانی جابهجاشده میبینند. منطقه زمانی مبدل را روی جایی تنظیم کنید که رویداد بر اساس آن برنامهریزی شده است.
- اعتماد به
Get-Date -UFormat %sدر PowerShell. در Windows PowerShell 5.1 روی ماشینی با UTC+4، این دستور مقداری با چهار ساعت اختلاف و همراه با بخش اعشاری برگرداند. بهجای آن از[DateTimeOffset]::UtcNow.ToUnixTimeSeconds()استفاده کنید. - اشتباه گرفتن حرفهای استایل.
fوF،tوT،dوD، وsوSهمگی متفاوتاند؛ پس وقتی خروجی بلندتر یا کوتاهتر از انتظار به نظر میرسد، بزرگی و کوچکی حرف را بررسی کنید.