コンテンツへスキップ
🛠️ToolsShed

時間前フォーマッター

日付やタイムスタンプを「3日前」「2ヶ月後」などの相対時間文字列に変換します。

このツールについて

時間前フォーマッターは、絶対的な日付やタイムスタンプを「3日前」や「2ヶ月後」といった人間が自然に理解できる相対的な時間表現に変換します。このフォーマットは、チャットアプリケーション、ソーシャルメディア、アクティビティフィード、プロジェクト管理ツールなどで、正確な日時を表示するよりも、何が起こったのかを示すことが重要な場合に特に有用です。

任意の日付またはタイムスタンプをツールに入力するだけで、その瞬間がどのくらい前だったのか、または将来がどのくらい遠いのかが即座に表示されます。フォーマッターは秒、分、時間、日、月、年など異なる時間スケールをインテリジェントに処理し、可読性のために最も意味のあるユニットを自動的に選択します。

このツールは、リアルタイムアプリケーションを構築する開発者、投稿と更新を管理するコンテンツクリエイター、そして心の計算なしに一目で時間差を理解したい人にとって非常に価値があります。

よくある質問

コード実装

from datetime import datetime, timezone

def time_ago(past: datetime, now: datetime = None) -> str:
    """Return human-readable relative time string."""
    if now is None:
        now = datetime.now(timezone.utc)
    diff = now - past
    total_seconds = int(diff.total_seconds())
    if total_seconds < 0:
        return "in the future"

    minutes = total_seconds // 60
    hours = minutes // 60
    days = hours // 24
    months = days // 30
    years = days // 365

    if total_seconds < 60:
        return f"{total_seconds} second{'s' if total_seconds != 1 else ''} ago"
    elif minutes < 60:
        return f"{minutes} minute{'s' if minutes != 1 else ''} ago"
    elif hours < 24:
        return f"{hours} hour{'s' if hours != 1 else ''} ago"
    elif days < 30:
        return f"{days} day{'s' if days != 1 else ''} ago"
    elif months < 12:
        return f"{months} month{'s' if months != 1 else ''} ago"
    else:
        return f"{years} year{'s' if years != 1 else ''} ago"

# Examples
from datetime import timedelta
now = datetime(2025, 6, 15, 12, 0, 0, tzinfo=timezone.utc)
print(time_ago(now - timedelta(seconds=30), now))   # 30 seconds ago
print(time_ago(now - timedelta(minutes=45), now))   # 45 minutes ago
print(time_ago(now - timedelta(days=3), now))       # 3 days ago
print(time_ago(now - timedelta(days=400), now))     # 1 year ago

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.