{"id":2539,"date":"2026-03-01T01:03:08","date_gmt":"2026-02-28T23:03:08","guid":{"rendered":"https:\/\/bio-me.bio\/?page_id=2539"},"modified":"2026-03-06T19:47:44","modified_gmt":"2026-03-06T17:47:44","slug":"jet-lag-planner","status":"publish","type":"page","link":"https:\/\/bio-me.bio\/?page_id=2539","title":{"rendered":"Jet Lag Planner"},"content":{"rendered":"\n<div class=\"eco-tool wp-block-group\" id=\"eco-tool-jetlag-6e3c0\">\n  <div class=\"eco-tool__header\">\n    <h2 class=\"eco-tool__title\">Jet Lag Planner<\/h2>\n    <p class=\"eco-tool__lead\">\n      Plan a gradual sleep schedule shift before travel to reduce jet lag. Educational planner (not medical advice).\n    <\/p>\n  <\/div>\n\n  <form class=\"eco-tool__form\" id=\"eco-jl-form-6e3c0\" novalidate>\n    <div class=\"eco-tool__grid3\">\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-jl-diff-6e3c0\">Time zone difference (hours)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-jl-diff-6e3c0\" type=\"number\" min=\"0\" max=\"14\" step=\"0.5\" value=\"6\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Example: 6 hours time difference.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-jl-dir-6e3c0\">Direction<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-jl-dir-6e3c0\">\n          <option value=\"east\" selected>Travel east (sleep earlier)<\/option>\n          <option value=\"west\">Travel west (sleep later)<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">East is usually harder than west.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-jl-days-6e3c0\">Days before departure<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-jl-days-6e3c0\" type=\"number\" min=\"1\" step=\"1\" value=\"4\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">How many days you can adjust beforehand.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-jl-shift-6e3c0\">Shift per day (hours)<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-jl-shift-6e3c0\">\n          <option value=\"0.5\">0.5 h\/day (gentle)<\/option>\n          <option value=\"1\" selected>1 h\/day (standard)<\/option>\n          <option value=\"1.5\">1.5 h\/day (aggressive)<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">More aggressive may be harder to follow.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-jl-bed-6e3c0\">Current bedtime<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-jl-bed-6e3c0\" type=\"time\" value=\"23:00\" \/>\n        <div class=\"eco-tool__hint\">Your usual bedtime.<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-jl-wake-6e3c0\">Current wake time<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-jl-wake-6e3c0\" type=\"time\" value=\"07:00\" \/>\n        <div class=\"eco-tool__hint\">Your usual wake time.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__actions\">\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn\" id=\"eco-jl-calc-6e3c0\">Calculate<\/button>\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn eco-tool__btn--ghost\" id=\"eco-jl-reset-6e3c0\">Reset<\/button>\n      <div class=\"eco-tool__error\" id=\"eco-jl-error-6e3c0\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <div class=\"eco-tool__result\" id=\"eco-jl-result-6e3c0\" hidden>\n    <h3 class=\"eco-tool__subtitle\">Schedule<\/h3>\n\n    <div class=\"eco-tool__card eco-tool__card--wide\">\n      <div class=\"eco-tool__metric-label\">Recommended daily shift<\/div>\n      <div class=\"eco-tool__metric-sub\" id=\"eco-jl-summary-6e3c0\"><\/div>\n    <\/div>\n\n    <div class=\"eco-tool__table-wrap\">\n      <table class=\"eco-tool__table\" id=\"eco-jl-table-6e3c0\">\n        <thead>\n          <tr>\n            <th>Day<\/th>\n            <th>Bedtime<\/th>\n            <th>Wake time<\/th>\n            <th>Shift achieved<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody><\/tbody>\n      <\/table>\n    <\/div>\n\n    <p class=\"eco-tool__note\">\n      Tip: light exposure and meal timing can also help shift your body clock.\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n.eco-tool{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:16px}\n.eco-tool__grid3{display:grid;grid-template-columns:1fr;gap:16px}\n@media(min-width:860px){.eco-tool__grid3{grid-template-columns:1fr 1fr 1fr}}\n.eco-tool__field{display:flex;flex-direction:column;gap:6px}\n.eco-tool__label{font-weight:600}\n.eco-tool__input{width:100%;height:44px;padding:0 12px;border:1px solid rgba(0,0,0,.2);border-radius:10px;background:#fff;box-sizing:border-box;font:inherit}\n.eco-tool__actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:16px}\n.eco-tool__btn{padding:10px 22px}\n.eco-tool__btn--ghost{background:transparent!important;border:1px solid rgba(0,0,0,.2)!important}\n.eco-tool__btn--ghost:hover,.eco-tool__btn--ghost:focus{background:rgba(0,0,0,.06)!important;border-color:rgba(0,0,0,.35)!important}\n.eco-tool__error{min-height:1.2em;font-weight:600;flex:1 1 240px}\n.eco-tool__result{margin-top:16px}\n.eco-tool__subtitle{margin:0 0 10px}\n.eco-tool__card{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin-top:10px}\n.eco-tool__metric-label{opacity:.85;font-weight:600}\n.eco-tool__metric-sub{opacity:.9;margin-top:6px}\n.eco-tool__table-wrap{overflow:auto;border:1px solid rgba(0,0,0,.10);border-radius:12px;margin-top:12px}\n.eco-tool__table{width:100%;border-collapse:collapse;min-width:520px}\n.eco-tool__table th,.eco-tool__table td{padding:10px 12px;border-bottom:1px solid rgba(0,0,0,.08);text-align:left}\n.eco-tool__table thead th{background:rgba(0,0,0,.03)}\n.eco-tool__note{margin:10px 0 0;opacity:.9}\n<\/style>\n\n<script>\n(function(){\n  const S=\"6e3c0\";\n  const el=id=>document.getElementById(id+\"-\"+S);\n\n  const diffEl=el(\"eco-jl-diff\");\n  const dirEl=el(\"eco-jl-dir\");\n  const daysEl=el(\"eco-jl-days\");\n  const shiftEl=el(\"eco-jl-shift\");\n  const bedEl=el(\"eco-jl-bed\");\n  const wakeEl=el(\"eco-jl-wake\");\n\n  const calcBtn=el(\"eco-jl-calc\");\n  const resetBtn=el(\"eco-jl-reset\");\n  const errEl=el(\"eco-jl-error\");\n\n  const resEl=el(\"eco-jl-result\");\n  const summaryEl=el(\"eco-jl-summary\");\n  const table=el(\"eco-jl-table\");\n  const tbody=table.querySelector(\"tbody\");\n\n  function setError(m){ errEl.textContent=m||\"\"; }\n\n  function timeToMinutes(t){\n    const [hh,mm]=t.split(\":\").map(Number);\n    return hh*60+mm;\n  }\n\n  function minutesToTime(m){\n    m = ((m % 1440) + 1440) % 1440;\n    const hh = Math.floor(m\/60);\n    const mm = m%60;\n    return String(hh).padStart(2,\"0\")+\":\"+String(mm).padStart(2,\"0\");\n  }\n\n  function calculate(){\n    setError(\"\");\n    const diff=Number(diffEl.value);\n    const days=Number(daysEl.value);\n    const step=Number(shiftEl.value);\n    const dir=dirEl.value;\n\n    if(!Number.isFinite(diff) || diff<0 || diff>14 || !Number.isFinite(days) || days<1){\n      setError(\"Please enter valid values (difference 0\u201314 hours, days \u2265 1).\");\n      resEl.hidden=true;\n      return;\n    }\n\n    const bed0 = timeToMinutes(bedEl.value);\n    const wake0 = timeToMinutes(wakeEl.value);\n\n    const sign = (dir===\"east\") ? -1 : 1; \/\/ east = earlier (subtract minutes)\n    const totalNeeded = diff * 60 * sign;\n\n    const maxPossible = days * step * 60 * sign;\n    const willAchieve = Math.abs(maxPossible) >= Math.abs(totalNeeded);\n\n    const actualStep = sign * step * 60;\n\n    tbody.innerHTML = \"\";\n    let achieved = 0;\n\n    for(let d=1; d<=days; d++){\n      \/\/ If we would overshoot, cap the final step\n      let remaining = totalNeeded - achieved;\n      let stepToday = actualStep;\n\n      if(Math.abs(stepToday) > Math.abs(remaining)){\n        stepToday = remaining;\n      }\n\n      achieved += stepToday;\n\n      const bed = minutesToTime(bed0 + achieved);\n      const wake = minutesToTime(wake0 + achieved);\n\n      const row = document.createElement(\"tr\");\n      row.innerHTML = `\n        <td>Day ${d}<\/td>\n        <td>${bed}<\/td>\n        <td>${wake}<\/td>\n        <td>${(Math.round((achieved\/60)*10)\/10).toLocaleString()} h<\/td>\n      `;\n      tbody.appendChild(row);\n\n      if(achieved === totalNeeded) break;\n    }\n\n    const achievedH = Math.round((achieved\/60)*10)\/10;\n    const needH = diff;\n\n    summaryEl.textContent =\n      willAchieve\n        ? `You can shift about ${needH} hours in ${days} day(s) at ~${step} h\/day (${dir === \"east\" ? \"earlier\" : \"later\"} schedule).`\n        : `You will likely shift ~${Math.abs(achievedH)} hours in ${days} day(s). Full adjustment needs ${needH} hours\u2014consider more days or a bigger daily shift.`;\n\n    resEl.hidden=false;\n  }\n\n  function reset(){\n    setError(\"\");\n    diffEl.value=\"6\";\n    dirEl.value=\"east\";\n    daysEl.value=\"4\";\n    shiftEl.value=\"1\";\n    bedEl.value=\"23:00\";\n    wakeEl.value=\"07:00\";\n    resEl.hidden=true;\n  }\n\n  calcBtn.addEventListener(\"click\", calculate);\n  resetBtn.addEventListener(\"click\", reset);\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Jet Lag Planner Plan a gradual sleep schedule shift before travel to reduce jet lag. Educational planner (not medical advice). Time zone difference (hours) Example: 6 hours time difference. Direction&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2452,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2539"}],"collection":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2539"}],"version-history":[{"count":1,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2539\/revisions"}],"predecessor-version":[{"id":2540,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2539\/revisions\/2540"}],"up":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2452"}],"wp:attachment":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}