تایم‌استمپ در دیسکورد: نحو، استایل‌ها و مثال‌ها

تایم‌استمپ دیسکورد یک زمان یونیکس بر حسب ثانیه به‌علاوه یک حرف استایل است، و هر خواننده آن را در منطقه زمانی و قالب محلی خودش می‌بیند.

همین حالا امتحان کنید: مبدل تایم‌استمپ یونیکس

اگر در سروری که اعضایش در چند قاره پراکنده‌اند بنویسید «رویداد ساعت ۸ شب شروع می‌شود»، سردرگمی تضمین‌شده است. دیسکورد این مشکل را با یک نشانه‌گذاری کوچک حل می‌کند: لحظه موردنظر را به شکل یک تایم‌استمپ یونیکس داخل <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:...> در ستون کد همراه دکمه کپی، و پیش‌نمایشی در ستون این‌طور دیده می‌شود. این زبانه ساعت را در منطقه زمانی دستگاه خودتان می‌خواند و منوی منطقه زمانی را نادیده می‌گیرد؛ پس اگر رویداد جای دیگری برنامه‌ریزی شده، اول عدد را به دست آورید:

  1. از منوی منطقه زمانی، منطقه‌ای را که رویداد بر اساس آن برنامه‌ریزی شده انتخاب کنید. این منو روی منطقه زمانی خود شما تنظیم شده و منطقه‌های IANA را که مرورگرتان پشتیبانی می‌کند، مثل America/New_York، فهرست می‌کند.
  2. در پنل تاریخ ← تایم‌استمپ، تاریخ و ساعت را انتخاب کنید و روی تبدیل کلیک کنید.
  3. مقدار ثانیه را کپی کنید، نه مقدار میلی‌ثانیه را، و آن را داخل <t:...:F> یا هر استایلی که می‌خواهید بچسبانید.
  4. برای اطمینان، عدد را در پنل تایم‌استمپ ← تاریخ بچسبانید و آن را به وقت 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 همگی متفاوت‌اند؛ پس وقتی خروجی بلندتر یا کوتاه‌تر از انتظار به نظر می‌رسد، بزرگی و کوچکی حرف را بررسی کنید.

سوالات متداول

استایل پیش‌فرض تایم‌استمپ دیسکورد چیست؟

f، که مستندات دیسکورد آن را Long Date, Short Time می‌نامد. تایم‌استمپی که بدون حرف استایل نوشته شود، به همان شکل تایم‌استمپ دارای :f نمایش داده می‌شود.

چرا تایم‌استمپ دیسکورد من تاریخ اشتباه نشان می‌دهد؟

معمولاً به این دلیل که عدد به‌جای ثانیه بر حسب میلی‌ثانیه است و تاریخ را هزاران سال جلو می‌برد، یا چون تاریخ در منطقه زمانی اشتباه تبدیل شده است. زمان یونیکس فعلی بر حسب ثانیه ۱۰ رقم دارد.

چطور در دیسکورد شمارش معکوس بسازم؟

از استایل R با زمان یونیکس رویداد استفاده کنید، مثلاً t:1790892000:R داخل علامت‌های کوچک‌تر و بزرگ‌تر (angle brackets). دیسکورد زمان را نسبت به لحظه‌ای که پیام دیده می‌شود نمایش می‌دهد.

آیا همه یک زمان را می‌بینند؟

همه یک لحظه را می‌بینند، اما در منطقه زمانی خودشان و با قالب تاریخ و ساعت مربوط به زبان و منطقه خودشان. هدف استفاده از تایم‌استمپ به‌جای نوشتن زمان به شکل متن همین است.
همین حالا امتحان کنید: مبدل تایم‌استمپ یونیکس