Discordのタイムスタンプ:書式・スタイル・使用例

Discordのタイムスタンプは、秒単位のUnix時間とスタイル文字の組み合わせです。読む人はそれぞれ自分のタイムゾーンと言語設定に合わせた表示で見ます。

ツールで試す: Unixタイムスタンプ変換

複数の大陸にメンバーがいるサーバーで「イベントは午後8時開始」と投稿すれば、混乱は避けられません。Discordはこの問題を小さなマークアップで解決しています。日時をUnixタイムスタンプとして<t:...>の中に書くと、読む人それぞれのDiscordクライアントが、その人のタイムゾーンに変換し、その人のロケールに合った書式で表示してくれます。入力する値は1つだけで、全員が正しい現地時刻を目にします。

書式

タイムスタンプには2つの形があります。

<t:TIMESTAMP>
<t:TIMESTAMP:STYLE>

TIMESTAMPはUnix時間、つまり1970年1月1日UTCからの秒数で、1790892000のような値です。STYLEは書式を選ぶ1文字です。省略するとDiscordはfを使うので、<t:1790892000>と<t:1790892000:f>は同じ表示になります。この文字は大文字と小文字が区別され、dとDは別のスタイルです。

すべてのタイムスタンプスタイル

Discordの開発者向けドキュメントには9つのスタイルが載っています。下の表の名前と表示例は、そこに記載されているものです。古い解説記事の多くは7つのスタイルしか挙げておらず、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

これらの例は表示のパターンを示すもので、すべての読者に表示される文字列そのものではありません。Discordは、タイムスタンプがユーザーのタイムゾーンとロケールで表示されると明記しています。そのため日と月の順序、区切り文字、月の名前、12時間制か24時間制かは、読む人によって変わります。Rはメッセージが表示された時点で計算されるので、カウントダウンや締め切りに使うならこのスタイルです。未来の時刻は「in 3 hours」(3時間後)のように表示されます。

1つの数値で、すべてのタイムゾーンに対応

Unixタイムスタンプが表すのは、壁時計の時刻ではなく1つの瞬間です。1790892000は2026年10月1日22:00 UTCで、この値から作ったタイムスタンプは、読む人それぞれに現地時刻を表示します。

読む人の場所表示される現地時刻
ニューヨーク10月1日 18:00(午後6:00)
ロンドン10月1日 23:00
コルカタ10月2日 03:30
東京10月2日 07:00

読む側での変換は自動で行われます。誤りが入り込むのは書く側だけです。つまり「ニューヨーク時間の午後6時」を、最初に正しい数値へ変換する段階です。

Unixタイムスタンプを取得する

いちばん手早いのはタイムスタンプ変換ツールを使う方法です。イベントが自分の端末の時刻であれば、Discordタブを開いて日付と時刻を選ぶか現在時刻を使用を押すと、表がすべてのスタイルをまとめて出します。スタイルの名前、コード列にできあがった<t:...>とコピーボタン、そして表示例のプレビューです。このタブは時刻を端末のタイムゾーンで読み、タイムゾーンメニューは使いません。イベントが別の地域で予定されているときは、先に数値を求めます。

  1. イベントを予定しているタイムゾーンをタイムゾーンメニューから選びます。初期値は自分のタイムゾーンで、America/New_YorkのようにブラウザーがサポートするIANAタイムゾーンが一覧表示されます。
  2. 日付 → タイムスタンプパネルで日付と時刻を選び、変換をクリックします。
  3. ミリ秒ではなく秒の値をコピーし、<t:...:F>など使いたいスタイルに貼り付けます。
  4. 念のため、その数値をタイムスタンプ → 日付パネルに貼り付け、UTC、任意のタイムゾーン、相対時間で読み戻して確認します。

ツールバーには現在のUnixタイムスタンプもコピーボタン付きで表示されるので、「投稿時刻」や「今から開始」といったメッセージに便利です。予定表をまとめて扱うなら、一括タブが1行に1件のタイムスタンプまたは日付を最大500行まで受け取り、CSVでコピーで表を表計算ソフトへ渡せます。コードタブは、画面のタイムスタンプを変換するコードを8言語で書き出します(PowerShellは含みません)。コードでは、次のどの方法でも、2026年10月1日午後6時・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のような固定オフセットが正しいのは、1年のうち一部の期間だけです。ニューヨークは2026年11月1日にUTC−5へ切り替わるので、それ以降の日付では同じ壁時計の時刻に-05:00が必要になります。名前付きのタイムゾーンで変換すれば、この問題は起きません。変換ツールのタイムゾーンメニューはこの方式ですし、Pythonのzoneinfo.ZoneInfo("America/New_York")も同様です。ただしWindowsのPythonでこれを使うにはtzdataパッケージが必要で、入っていない環境ではZoneInfoNotFoundErrorが発生しました。

そのまま貼り付けられる例

メンテナンス開始:<t:1790892000:F>(<t:1790892000:R>)
大会のチェックイン締め切り:<t:1790892000:t>
応募の受付は<t:1790892000:D>までです。

1行目のように完全な日付と相対時間を組み合わせると、正確な日時と残り時間の両方が伝わります。日付として表示させずにマークアップそのものを見せたいとき、たとえばほかのメンバーに書き方を説明するときは、バッククォートで囲めばDiscordがコードとして表示します。

よくある間違い

  • 秒ではなくミリ秒を使う。JavaScriptのDate.now()はミリ秒を返し、現在は13桁です。秒単位のUnix時間は2286年まで10桁です。1790892000000を秒として読むと、50,000年以上先の日付になってしまいます。1000で割って切り捨ててください。
  • タイムゾーンなしで日付を解析する。JavaScriptのnew Date('2026-10-01T18:00')は、コードを実行しているマシンのタイムゾーンを使います。ホスティングされたBotでは、それがあなたのタイムゾーンではなくUTCであることもよくあります。一方、'2026-10-01'のような日付だけの文字列はUTCの午前0時として読まれます。常にオフセットを含めるか、名前付きのタイムゾーンで変換してください。
  • 間違ったタイムゾーンで変換する。ベルリンで20:00に予定しているイベントを自分のタイムゾーンの20:00として変換すると、全員にずれた時刻が表示されます。変換ツールのタイムゾーンは、イベントを予定している場所に合わせてください。
  • PowerShellのGet-Date -UFormat %sを信用する。UTC+4のマシン上のWindows PowerShell 5.1では、4時間ずれたうえに小数部の付いた値が返りました。代わりに[DateTimeOffset]::UtcNow.ToUnixTimeSeconds()を使ってください。
  • スタイル文字を取り違える。fとF、tとT、dとD、sとSはそれぞれ別のスタイルです。表示が予想より長い、または短いときは、大文字と小文字を確認してください。

よくある質問

Discordのタイムスタンプの既定のスタイルは?

fです。Discordのドキュメントでは「Long Date, Short Time」と呼ばれています。スタイル文字を付けずに書いたタイムスタンプは、:fを付けた場合と同じように表示されます。

Discordのタイムスタンプが間違った日付になるのはなぜ?

多くの場合、数値が秒ではなくミリ秒になっていて日付が数千年先にずれているか、間違ったタイムゾーンで日時を変換したかのどちらかです。現在の秒単位のUnix時間は10桁です。

Discordでカウントダウンを作るには?

イベントのUnix時間にRスタイルを使います。たとえばt:1790892000:Rを山括弧で囲んで書きます。Discordはメッセージが表示された時点からの相対時間を表示します。

全員に同じ時刻が表示されますか?

全員が同じ瞬間を見ますが、表示はそれぞれのタイムゾーンで、ロケールに応じた日付と時刻の書式になります。時刻をテキストで書く代わりにタイムスタンプを使う意味は、まさにそこにあります。
ツールで試す: Unixタイムスタンプ変換