Discordのタイムスタンプ:書式・スタイル・使用例
Discordのタイムスタンプは、秒単位の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:...>とコピーボタン、そして表示例のプレビューです。このタブは時刻を端末のタイムゾーンで読み、タイムゾーンメニューは使いません。イベントが別の地域で予定されているときは、先に数値を求めます。
- イベントを予定しているタイムゾーンをタイムゾーンメニューから選びます。初期値は自分のタイムゾーンで、America/New_YorkのようにブラウザーがサポートするIANAタイムゾーンが一覧表示されます。
- 日付 → タイムスタンプパネルで日付と時刻を選び、変換をクリックします。
- ミリ秒ではなく秒の値をコピーし、
<t:...:F>など使いたいスタイルに貼り付けます。 - 念のため、その数値をタイムスタンプ → 日付パネルに貼り付け、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はそれぞれ別のスタイルです。表示が予想より長い、または短いときは、大文字と小文字を確認してください。