{"id":13297,"date":"2024-12-13T10:53:10","date_gmt":"2024-12-13T01:53:10","guid":{"rendered":"https:\/\/f1-lap-time.com\/?page_id=13297"},"modified":"2025-01-18T14:43:33","modified_gmt":"2025-01-18T05:43:33","slug":"t-2024","status":"publish","type":"page","link":"https:\/\/f1-lap-time.com\/?page_id=13297","title":{"rendered":"T-2024"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"ja\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<style>\n  body {\n    font-family: sans-serif;\n    padding: 20px;\n    background: #f2f2f2;\n  }\n  .timer-container {\n    max-width: 500px;\n    margin: 0 auto;\n    background: #ffffff;\n    padding: 20px;\n    border-radius: 5px;\n    text-align: center;\n  }\n  .timer-display {\n    font-size: 2rem;\n    margin-bottom: 20px;\n  }\n  .buttons button {\n    font-size: 1rem;\n    margin: 5px;\n    padding: 10px;\n  }\n  .info {\n    margin-top: 20px;\n    font-size: 0.9rem;\n    color: #333;\n  }\n  .settings {\n    margin-bottom: 20px;\n    text-align: left;\n  }\n  .settings label {\n    display: inline-block;\n    width: 180px;\n    margin-right: 10px;\n  }\n  .settings input {\n    width: 100px; \/* \u5e45\u3092100px *\/\n    text-align: right;\n  }\n  .settings-row {\n    margin-bottom: 10px;\n  }\n  .volume-control {\n    margin-top: 10px;\n  }\n\n  \/* \u901a\u77e5\u7528\u30aa\u30fc\u30d0\u30fc\u30ec\u30a4 *\/\n  #notificationOverlay {\n    display: none;\n    position: fixed;\n    top: 0; left: 0;\n    width:100vw; height:100vh;\n    background: rgba(0,0,0,0.5);\n    justify-content: center;\n    align-items: center;\n    z-index: 9999;\n  }\n  .notificationBox {\n    background: #fff;\n    padding: 20px;\n    border-radius: 10px;\n    text-align: center;\n  }\n  .notificationBox button {\n    margin-top: 10px;\n    padding: 10px;\n  }\n<\/style>\n<title>\u5236\u9650\u4ed8\u304d\u30ef\u30fc\u30af\u30bf\u30a4\u30de\u30fc<\/title>\n<\/head>\n<body>\n<div class=\"timer-container\">\n  <h1>\u5236\u9650\u4ed8\u304d\u30ef\u30fc\u30af\u30bf\u30a4\u30de\u30fc<\/h1>\n\n  <div class=\"settings\">\n    <h2>\u6642\u9593\u8a2d\u5b9a<\/h2>\n    <div class=\"settings-row\">\n      <label>\u9023\u7d9a\u4f5c\u696d\u5236\u9650\u6642\u9593:<\/label>\n      <input type=\"number\" id=\"continuousHours\" min=\"0\" value=\"0\"> \u6642 \n      <input type=\"number\" id=\"continuousMinutes\" min=\"0\" max=\"59\" value=\"15\"> \u5206\n    <\/div>\n    <div class=\"settings-row\">\n      <label>1\u65e5\u306e\u5408\u8a08\u4f5c\u696d\u6642\u9593:<\/label>\n      <input type=\"number\" id=\"dailyHours\" min=\"0\" value=\"2\"> \u6642\n      <input type=\"number\" id=\"dailyMinutes\" min=\"0\" max=\"59\" value=\"0\"> \u5206\n    <\/div>\n    <button id=\"saveSettingsBtn\">\u8a2d\u5b9a\u4fdd\u5b58<\/button>\n  <\/div>\n  \n  <div class=\"timer-display\" id=\"timerDisplay\">00:30:00<\/div>\n  <div class=\"buttons\">\n    <button id=\"startBtn\">\u4f5c\u696d\u958b\u59cb<\/button>\n    <button id=\"pauseBtn\">\u4e00\u6642\u505c\u6b62<\/button>\n    <button id=\"breakBtn\">\u4f11\u61a9<\/button>\n    <button id=\"resetBtn\">\u65e5\u6b21\u30ea\u30bb\u30c3\u30c8<\/button>\n  <\/div>\n  <div class=\"info\">\n    <p>\u7d2f\u8a08\u4f5c\u696d\u6642\u9593: <span id=\"totalWorked\">00:00:00<\/span><\/p>\n    <div class=\"volume-control\">\n      <label for=\"volumeSlider\">\u97f3\u91cf:<\/label>\n      <input type=\"range\" id=\"volumeSlider\" min=\"0\" max=\"1\" step=\"0.1\" value=\"1\">\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u901a\u77e5\u7528\u30aa\u30fc\u30d0\u30fc\u30ec\u30a4 -->\n<div id=\"notificationOverlay\">\n  <div class=\"notificationBox\">\n    <div id=\"notificationText\">\u30e1\u30c3\u30bb\u30fc\u30b8<\/div>\n    <button id=\"notificationOkBtn\">OK<\/button>\n  <\/div>\n<\/div>\n\n<!-- \u30d9\u30eb\u97f3URL -->\n<audio id=\"alertSound\" src=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2024\/12\/bell.mp3\" preload=\"auto\"><\/audio>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  console.log(\"DOM fully loaded.\");\n\n  \/\/ ========== \u8a2d\u5b9a\u5024 ==========\n  const DEFAULT_CONTINUOUS_MIN = 15;  \/\/ 15\u5206\n  const DEFAULT_DAILY_HOUR     = 2;   \/\/ 2\u6642\u9593\n\n  let WORK_INTERVAL = 900;    \/\/ 15\u5206 = 900\u79d2\n  let DAILY_LIMIT   = 7200;   \/\/ 2\u6642\u9593 = 7200\u79d2\n\n  \/\/ ========== \u30b9\u30c6\u30fc\u30c8\u7ba1\u7406 ==========\n  let timerInterval = null;\n  let paused        = false;  \/\/ \u4e00\u6642\u505c\u6b62\u4e2d\u304b\u3069\u3046\u304b\n\n  \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u95a2\u9023\n  let sessionEndTime        = null; \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u7d42\u4e86\u4e88\u5b9a(\u30df\u30ea\u79d2)\n  let sessionPausedRemaining = null; \/\/ \u4e00\u6642\u505c\u6b62\u6642\u306e\u6b8b\u308a\u79d2\u6570\n\n  \/\/ \u65e5\u6b21\u5408\u8a08\n  let totalWorkTime = 0;    \/\/ 1\u65e5\u306e\u7d2f\u8a08(\u79d2)\n  let storedDate    = localStorage.getItem('work_timer_date');\n  let storedWorkSec = localStorage.getItem('work_timer_total');\n  let today         = new Date().toISOString().slice(0, 10);\n\n  if (storedDate === today && storedWorkSec !== null) {\n    totalWorkTime = parseInt(storedWorkSec, 10);\n  } else {\n    localStorage.setItem('work_timer_date', today);\n    localStorage.setItem('work_timer_total', '0');\n  }\n\n  \/\/ \u30d6\u30e9\u30a6\u30b6\u97f3\u58f0\u518d\u751f\u5236\u9650\u7528\n  let soundPrimed = false;\n\n  \/\/ ========== DOM\u8981\u7d20 ==========\n  const timerDisplay         = document.getElementById('timerDisplay');\n  const totalWorked          = document.getElementById('totalWorked');\n  const startBtn             = document.getElementById('startBtn');\n  const pauseBtn             = document.getElementById('pauseBtn');\n  const breakBtn             = document.getElementById('breakBtn');\n  const resetBtn             = document.getElementById('resetBtn');\n  const alertSound           = document.getElementById('alertSound');\n\n  const continuousHoursInput   = document.getElementById('continuousHours');\n  const continuousMinutesInput = document.getElementById('continuousMinutes');\n  const dailyHoursInput        = document.getElementById('dailyHours');\n  const dailyMinutesInput      = document.getElementById('dailyMinutes');\n  const saveSettingsBtn        = document.getElementById('saveSettingsBtn');\n  const volumeSlider           = document.getElementById('volumeSlider');\n\n  const notificationOverlay = document.getElementById('notificationOverlay');\n  const notificationText    = document.getElementById('notificationText');\n  const notificationOkBtn   = document.getElementById('notificationOkBtn');\n\n  \/\/ \u521d\u671f\u753b\u9762\u53cd\u6620\n  updateDisplay(WORK_INTERVAL, timerDisplay);\n  updateDisplay(totalWorkTime, totalWorked);\n  alertSound.volume = parseFloat(volumeSlider.value);\n\n  \/\/ ========== \u30a4\u30d9\u30f3\u30c8\u767b\u9332 ==========\n  notificationOkBtn.addEventListener('click', () => {\n    notificationOverlay.style.display = 'none';\n  });\n\n  startBtn.addEventListener('click', handleStart);\n  pauseBtn.addEventListener('click', handlePause);\n  breakBtn.addEventListener('click', handleBreak);\n  resetBtn.addEventListener('click', handleDailyReset);\n  saveSettingsBtn.addEventListener('click', handleSaveSettings);\n\n  volumeSlider.addEventListener('input', () => {\n    alertSound.volume = parseFloat(volumeSlider.value);\n    console.log(\"Volume changed to:\", alertSound.volume);\n  });\n\n  loadSettingsFromLocalStorage();\n\n  \/\/ ========== \u95a2\u6570\u7fa4 ==========\n\n  \/\/ ---- \u4f5c\u696d\u958b\u59cb\u30dc\u30bf\u30f3 ----\n  function handleStart() {\n    if (totalWorkTime >= DAILY_LIMIT) {\n      showNotification(\"\u672c\u65e5\u306e\u4f5c\u696d\u6642\u9593\u306f\u65e2\u306b\u4e0a\u9650\u306b\u9054\u3057\u3066\u3044\u307e\u3059\u3002\");\n      return;\n    }\n\n    \/\/ \u4eca\u56de\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u5168\u3066\u3084\u308b\u3068\u4e0a\u9650\u8d85\u904e\uff1f\n    const afterThis = totalWorkTime + WORK_INTERVAL;\n    if (afterThis > DAILY_LIMIT) {\n      const overSec = afterThis - DAILY_LIMIT;\n      showNotification(`\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3059\u3079\u3066\u884c\u3046\u3068\u4e0a\u9650\u3092${overSec}\u79d2\u30aa\u30fc\u30d0\u30fc\u3057\u307e\u3059\u3002`);\n      \/\/ \u8b66\u544a\u3060\u3051\u8868\u793a\u3002\u30e6\u30fc\u30b6\u30fc\u5224\u65ad\u306b\u3088\u3063\u3066\u306f\u305d\u308c\u3067\u3082\u958b\u59cb\u3059\u308b\u306a\u3089\u4e0b\u8a18\u51e6\u7406\u3092\u547c\u3076\u7b49\u3002\n      \/\/ \u4eca\u56de\u306f\u4ed5\u69d8\u4e0a\u300c\u8b66\u544a\u3060\u3051\u3067\u958b\u59cb\u3059\u308b\u304b\u306f\u81ea\u7531\u300d\u3068\u3057\u3066\u3044\u307e\u3059\u3002\n    } else {\n      \/\/ \u97f3\u58f0\u518d\u751f\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306e\u307f\u3001\u6700\u521d\u306b\u4e00\u77ac\u7121\u97f3\u518d\u751f\u3067\u30ed\u30c3\u30af\u3092\u89e3\u9664\n      if (!soundPrimed) {\n        alertSound.play().then(() => {\n          alertSound.pause();\n          alertSound.currentTime = 0;\n          soundPrimed = true;\n          startWork(); \n        }).catch((e) => {\n          console.warn(\"\u97f3\u58f0\u306e\u81ea\u52d5\u518d\u751f\u304c\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u304c\u958b\u59cb:\", e);\n          startWork();\n        });\n      } else {\n        startWork();\n      }\n    }\n  }\n\n  \/\/ ---- \u5b9f\u969b\u306e\u4f5c\u696d\u958b\u59cb ----\n  function startWork() {\n    clearInterval(timerInterval);\n    paused = false;\n    pauseBtn.textContent = \"\u4e00\u6642\u505c\u6b62\";\n\n    \/\/ \u518d\u958b\u304b\u65b0\u898f\u304b\n    if (sessionPausedRemaining != null) {\n      \/\/ \u4e00\u6642\u505c\u6b62\u304b\u3089\u306e\u518d\u958b\n      sessionEndTime = Date.now() + (sessionPausedRemaining * 1000);\n      sessionPausedRemaining = null;\n    } else {\n      \/\/ \u65b0\u898f\u30bb\u30c3\u30b7\u30e7\u30f3\u958b\u59cb\n      sessionEndTime = Date.now() + (WORK_INTERVAL * 1000);\n    }\n\n    timerInterval = setInterval(updateTimer, 1000);\n  }\n\n  \/\/ ---- \u4e00\u6642\u505c\u6b62\u30dc\u30bf\u30f3 ----\n  function handlePause() {\n    if (!timerInterval && !paused) {\n      \/\/ \u30bf\u30a4\u30de\u30fc\u304c\u52d5\u3044\u3066\u306a\u3044\u3057\u3001paused\u3067\u3082\u306a\u3044 \u2192 \u4f55\u3082\u3057\u306a\u3044\n      return;\n    }\n\n    if (!paused) {\n      \/\/ \u2192 \u4e00\u6642\u505c\u6b62\u958b\u59cb\n      paused = true;\n      pauseBtn.textContent = \"\u518d\u958b\";\n\n      const remaining = Math.floor((sessionEndTime - Date.now()) \/ 1000);\n      sessionPausedRemaining = Math.max(0, remaining);\n\n      clearInterval(timerInterval);\n      timerInterval = null;\n    } else {\n      \/\/ \u2192 \u4e00\u6642\u505c\u6b62\u4e2d\u306a\u3089\u518d\u958b\n      paused = false;\n      pauseBtn.textContent = \"\u4e00\u6642\u505c\u6b62\";\n\n      \/\/ \u6b8b\u308a\u79d2\u6570\u304b\u3089\u7d42\u4e86\u4e88\u5b9a\u3092\u518d\u8a08\u7b97\n      sessionEndTime = Date.now() + (sessionPausedRemaining * 1000);\n      sessionPausedRemaining = null;\n\n      timerInterval = setInterval(updateTimer, 1000);\n    }\n  }\n\n  \/\/ ---- \u4f11\u61a9\u30dc\u30bf\u30f3(\u30bb\u30c3\u30b7\u30e7\u30f3\u9014\u4e2d\u7d42\u4e86) ----\n  function handleBreak() {\n    if (!timerInterval && !paused) {\n      \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u52d5\u3044\u3066\u3044\u306a\u3044 \u2192 \u4f55\u3082\u3057\u306a\u3044\n      return;\n    }\n    endSession(false);\n    showNotification(\"\u9014\u4e2d\u3067\u4f5c\u696d\u3092\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002\u7d2f\u8a08\u306b\u52a0\u7b97\u3055\u308c\u307e\u3059\u3002\");\n    pauseBtn.textContent = \"\u4e00\u6642\u505c\u6b62\";\n  }\n\n  \/\/ ---- \u65e5\u6b21\u30ea\u30bb\u30c3\u30c8 ----\n  function handleDailyReset() {\n    if (confirm(\"\u672c\u65e5\u306e\u8a18\u9332\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u307e\u3059\u304b\uff1f\")) {\n      \/\/ 1) \u7d2f\u8a08\u4f5c\u696d\u6642\u9593\u30ea\u30bb\u30c3\u30c8\n      totalWorkTime = 0;\n      localStorage.setItem('work_timer_date', new Date().toISOString().slice(0, 10));\n      localStorage.setItem('work_timer_total', '0');\n\n      \/\/ 2) \u30bf\u30a4\u30de\u30fc\u505c\u6b62\uff06\u30bb\u30c3\u30b7\u30e7\u30f3\u7834\u68c4\n      clearInterval(timerInterval);\n      timerInterval = null;\n      paused = false;\n      sessionPausedRemaining = null;\n      sessionEndTime = null;\n\n      \/\/ 3) \u8868\u793a\u66f4\u65b0\n      updateDisplay(WORK_INTERVAL, timerDisplay);\n      updateDisplay(totalWorkTime, totalWorked);\n\n      showNotification(\"\u672c\u65e5\u306e\u4f5c\u696d\u8a18\u9332\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u307e\u3057\u305f\u3002\");\n    }\n  }\n\n  \/\/ ---- \u8a2d\u5b9a\u4fdd\u5b58 ----\n  function handleSaveSettings() {\n    const ch = parseInt(continuousHoursInput.value, 10)   || 0;\n    const cm = parseInt(continuousMinutesInput.value, 10) || 0;\n    const dh = parseInt(dailyHoursInput.value, 10)        || 0;\n    const dm = parseInt(dailyMinutesInput.value, 10)      || 0;\n\n    const newWorkInterval = ch * 3600 + cm * 60;\n    const newDailyLimit   = dh * 3600 + dm * 60;\n\n    if (newWorkInterval <= 0) {\n      showNotification(\"\u9023\u7d9a\u4f5c\u696d\u5236\u9650\u6642\u9593\u306f1\u79d2\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\");\n      return;\n    }\n    if (newDailyLimit <= 0) {\n      showNotification(\"1\u65e5\u306e\u5408\u8a08\u4f5c\u696d\u6642\u9593\u306f1\u79d2\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\");\n      return;\n    }\n\n    WORK_INTERVAL = newWorkInterval;\n    DAILY_LIMIT   = newDailyLimit;\n\n    updateDisplay(WORK_INTERVAL, timerDisplay);\n    showNotification(\"\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f\u3002\u6b21\u56de\u306e\u4f5c\u696d\u958b\u59cb\u304b\u3089\u65b0\u3057\u3044\u5236\u9650\u6642\u9593\u304c\u53cd\u6620\u3055\u308c\u307e\u3059\u3002\");\n  }\n\n  \/\/ ---- \u8a2d\u5b9a\u8aad\u307f\u8fbc\u307f ----\n  function loadSettingsFromLocalStorage() {\n    const ch = localStorage.getItem('custom_continuous_hours');\n    const cm = localStorage.getItem('custom_continuous_minutes');\n    const dh = localStorage.getItem('custom_daily_hours');\n    const dm = localStorage.getItem('custom_daily_minutes');\n\n    let continuousH = ch !== null ? parseInt(ch,10) : 0;\n    let continuousM = cm !== null ? parseInt(cm,10) : DEFAULT_CONTINUOUS_MIN;\n    let dailyH      = dh !== null ? parseInt(dh,10) : DEFAULT_DAILY_HOUR;\n    let dailyM      = dm !== null ? parseInt(dm,10) : 0;\n\n    continuousHoursInput.value   = continuousH.toString();\n    continuousMinutesInput.value = continuousM.toString();\n    dailyHoursInput.value        = dailyH.toString();\n    dailyMinutesInput.value      = dailyM.toString();\n\n    WORK_INTERVAL = (continuousH * 3600) + (continuousM * 60);\n    DAILY_LIMIT   = (dailyH * 3600) + (dailyM * 60);\n  }\n\n  \/\/ ========== \u30bf\u30a4\u30de\u30fc\u66f4\u65b0\u51e6\u7406 ==========\n  function updateTimer() {\n    const now = Date.now();\n    const remaining = Math.floor((sessionEndTime - now) \/ 1000);\n\n    if (remaining <= 0) {\n      \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u81ea\u7136\u7d42\u4e86\n      endSession(true);\n      return;\n    }\n    updateDisplay(remaining, timerDisplay);\n  }\n\n  \/\/ ========== \u30bb\u30c3\u30b7\u30e7\u30f3\u7d42\u4e86\u51e6\u7406 ==========\n  \/\/  - isNaturalEnd=true: \u30bf\u30a4\u30de\u30fc0\u3067\u81ea\u7136\u7d42\u4e86\n  \/\/  - isNaturalEnd=false: \u9014\u4e2d\u3067\u7d42\u4e86\uff08\u4f11\u61a9\u306a\u3069\uff09\n  function endSession(isNaturalEnd) {\n    clearInterval(timerInterval);\n    timerInterval = null;\n    paused = false;\n    sessionPausedRemaining = null;\n\n    let used = 0;\n    if (isNaturalEnd) {\n      \/\/ \u5168\u90e8\u4f7f\u3044\u5207\u3063\u305f \u2192 WORK_INTERVAL\u5206\u52a0\u7b97\n      used = WORK_INTERVAL;\n      playAlert();\n      showNotification(\"\u9023\u7d9a\u4f5c\u696d\u6642\u9593\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002\u7d2f\u8a08\u306b\u52a0\u7b97\u3055\u308c\u307e\u3059\u3002\");\n    } else {\n      \/\/ \u9014\u4e2d\u7d42\u4e86\n      const now = Date.now();\n      const remain = Math.max(0, Math.floor((sessionEndTime - now) \/ 1000));\n      used = WORK_INTERVAL - remain;\n    }\n\n    \/\/ \u7d2f\u8a08\u52a0\u7b97\n    let newTotal = totalWorkTime + used;\n    if (newTotal > DAILY_LIMIT) {\n      newTotal = DAILY_LIMIT;\n    }\n    totalWorkTime = newTotal;\n    localStorage.setItem('work_timer_total', totalWorkTime.toString());\n    updateDisplay(totalWorkTime, totalWorked);\n\n    \/\/ \u521d\u671f\u5316\n    updateDisplay(WORK_INTERVAL, timerDisplay);\n    sessionEndTime = null;\n  }\n\n  \/\/ ========== \u8868\u793a\u66f4\u65b0\u30fb\u97f3\u58f0\u30fb\u901a\u77e5 ==========\n  function updateDisplay(sec, element) {\n    const hrs  = Math.floor(sec \/ 3600);\n    const mins = Math.floor((sec % 3600) \/ 60);\n    const secs = sec % 60;\n    element.textContent = `${hrs.toString().padStart(2,\"0\")}:${mins.toString().padStart(2,\"0\")}:${secs.toString().padStart(2,\"0\")}`;\n  }\n\n  function playAlert() {\n    alertSound.currentTime = 0;\n    alertSound.play().catch(e => {\n      console.error(\"\u97f3\u58f0\u518d\u751f\u304c\u30d6\u30ed\u30c3\u30af\u3055\u308c\u307e\u3057\u305f:\", e);\n    });\n  }\n\n  function showNotification(msg) {\n    notificationText.textContent = msg;\n    notificationOverlay.style.display = 'flex';\n  }\n\n});\n<\/script>\n<\/body>\n<\/html>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>\u5236\u9650\u4ed8\u304d\u30ef\u30fc\u30af\u30bf\u30a4\u30de\u30fc \u5236\u9650\u4ed8\u304d\u30ef\u30fc\u30af\u30bf\u30a4\u30de\u30fc \u6642\u9593\u8a2d\u5b9a \u9023\u7d9a\u4f5c\u696d\u5236\u9650\u6642\u9593: \u6642 \u5206 1\u65e5\u306e\u5408\u8a08\u4f5c\u696d\u6642\u9593: \u6642 \u5206 \u8a2d\u5b9a\u4fdd\u5b58 00:30:00 \u4f5c\u696d\u958b\u59cb \u4e00\u6642\u505c\u6b62 \u4f11\u61a9 \u65e5\u6b21\u30ea\u30bb\u30c3\u30c8 \u7d2f\u8a08\u4f5c\u696d\u6642\u9593: 00:00:00 \u97f3 [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":13298,"parent":17,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-13297","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages\/13297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13297"}],"version-history":[{"count":21,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages\/13297\/revisions"}],"predecessor-version":[{"id":13486,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages\/13297\/revisions\/13486"}],"up":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages\/17"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/media\/13298"}],"wp:attachment":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}