{"id":5933,"date":"2025-01-08T17:05:50","date_gmt":"2025-01-08T20:05:50","guid":{"rendered":"https:\/\/bangtannow.com\/calendario-bts\/"},"modified":"2025-06-30T12:22:39","modified_gmt":"2025-06-30T15:22:39","slug":"bts-calendar","status":"publish","type":"page","link":"https:\/\/bangtannow.com\/en\/bts-calendar\/","title":{"rendered":"BTS Calendar"},"content":{"rendered":"\n<div class=\"wp-block-uagb-container uagb-layout-grid uagb-block-2298e2b8 alignfull uagb-is-root-container\">\n<h1 class=\"wp-block-heading has-text-align-center has-ast-global-color-4-color has-text-color has-link-color wp-elements-e46d1625321761d07c394ff751d23de3\">BTS Calendar<\/h1>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Stay up to date with all BTS events and releases!<\/p>\n\n\n\n<p>Here you\u2019ll find dates for concerts, TV appearances, album drops, birthdays, and special events.<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>BTS Calendar<\/title>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600&#038;display=swap\" rel=\"stylesheet\" \/>\n  <style>\n    body {\n      font-family: 'Poppins', sans-serif;\n      background-color: #f9f8fd;\n      margin: 0;\n      padding: 20px;\n    }\n\n    .agenda-completa {\n      max-width: 800px;\n      margin: 0 auto;\n    }\n\n    .mes-bloco {\n      margin-top: 40px;\n    }\n\n    .mes-bloco h3 {\n      font-size: 18px;\n      font-weight: 600;\n      color: #5c2c91;\n      margin-bottom: 16px;\n      border-bottom: 1px solid #eee;\n      padding-bottom: 6px;\n    }\n\n    .evento-bts {\n      display: flex;\n      align-items: flex-start;\n      background-color: #F5CFFB;\n      padding: 12px 16px;\n      margin-bottom: 12px;\n      border-radius: 8px;\n      border: 1px solid #eee;\n    }\n\n    .evento-bts .data {\n      width: 80px;\n      font-size: 13px;\n      font-weight: 600;\n      color: #5c2c91;\n      text-align: left;\n      line-height: 1.4;\n      text-transform: uppercase;\n    }\n\n    .evento-bts .info {\n      flex: 1;\n      margin-left: 12px;\n      font-size: 14px;\n      color: #111;\n    }\n\n    .evento-bts .info .hora {\n      font-size: 12px;\n      color: #777;\n      margin-bottom: 4px;\n    }\n\n    .evento-bts .info .item {\n      margin-bottom: 12px;\n    }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"agenda-completa\" id=\"agenda-por-mes\"><\/div>\n <p style=\"text-align:center; font-size: 13px; color: #555; margin-top: 30px;\">\n    All times are shown in <strong>Eastern Time (US)<\/strong> \u2013 New York timezone.\n  <\/p>\n\n  <script>\n    const calendarId = \"contato.bangtannow@gmail.com\";\n    const apiKey = \"AIzaSyCmQ5iOJT3qlSEYVgdSi4mxXSFr4tGYSyo\";\n\n    const today = new Date();\n    const startToday = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\n    const tomorrow = new Date(startToday);\n    tomorrow.setDate(startToday.getDate() + 1);\n\n    const timeMin = startToday.toISOString();\n    const timeMax = new Date(`${today.getFullYear()}-12-31T23:59:59Z`).toISOString();\n\n    fetch(`https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/${encodeURIComponent(calendarId)}\/events?key=${apiKey}&timeMin=${timeMin}&timeMax=${timeMax}&singleEvents=true&orderBy=startTime`)\n      .then(res => res.json())\n      .then(data => {\n        const container = document.getElementById(\"agenda-por-mes\");\n        if (!data.items || data.items.length === 0) {\n          container.innerHTML = \"<p style='text-align:center;color:#777;'>No upcoming events found.<\/p>\";\n          return;\n        }\n\n        const eventsByMonth = {};\n\n        data.items.forEach(event => {\n          const start = new Date(event.start.dateTime || event.start.date);\n          const eventDay = new Date(start.getFullYear(), start.getMonth(), start.getDate());\n          const todayDay = new Date(startToday.getFullYear(), startToday.getMonth(), startToday.getDate());\n          const tomorrowDay = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate());\n\n          if (eventDay < todayDay) return;\n\n          const dateKey = eventDay.toISOString().slice(0, 10);\n          const month = start.toLocaleDateString('en-US', { month: 'long', year: 'numeric', timeZone: 'America\/New_York' });\n\n          let labelDate = \"\";\n          if (eventDay.getTime() === todayDay.getTime()) {\n            labelDate = \"TODAY\";\n          } else if (eventDay.getTime() === tomorrowDay.getTime()) {\n            labelDate = \"TOMORROW\";\n          } else {\n            const weekDay = start.toLocaleDateString('en-US', { weekday: 'short', timeZone: 'America\/New_York' });\n            const dayMonth = start.toLocaleDateString('en-US', { day: '2-digit', month: '2-digit', timeZone: 'America\/New_York' });\n            labelDate = `${weekDay},<br>${dayMonth}`;\n          }\n\n          const time = event.start.dateTime\n            ? start.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', timeZone: 'America\/New_York' })\n            : \"All day\";\n\n          if (!eventsByMonth[month]) eventsByMonth[month] = {};\n          if (!eventsByMonth[month][dateKey]) eventsByMonth[month][dateKey] = { labelDate, events: [] };\n\n          eventsByMonth[month][dateKey].events.push(`\n            <div class=\"item\">\n              <div class=\"hora\">${time}<\/div>\n              <div>${event.summary}<\/div>\n            <\/div>\n          `);\n        });\n\n        Object.keys(eventsByMonth).forEach(month => {\n          let htmlMonth = `<div class=\"mes-bloco\"><h3>${month.charAt(0).toUpperCase() + month.slice(1)}<\/h3>`;\n\n          Object.values(eventsByMonth[month]).forEach(({ labelDate, events }) => {\n            htmlMonth += `\n              <div class=\"evento-bts\">\n                <div class=\"data\">${labelDate}<\/div>\n                <div class=\"info\">${events.join(\"\")}<\/div>\n              <\/div>\n            `;\n          });\n\n          htmlMonth += `<\/div>`;\n          container.innerHTML += htmlMonth;\n        });\n      })\n      .catch(err => {\n        console.error(\"Error loading events:\", err);\n        document.getElementById(\"agenda-por-mes\").innerHTML = \"<p style='text-align:center;color:red;'>Error fetching events.<\/p>\";\n      });\n  <\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>BTS Calendar Stay up to date with all BTS events and releases! Here you\u2019ll find dates for concerts, TV appearances, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5421,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5933","page","type-page","status-publish","has-post-thumbnail","hentry"],"uagb_featured_image_src":{"full":["https:\/\/bangtannow.com\/wp-content\/uploads\/2025\/01\/Calendario-BTS-Bangtan-Now.jpg",1400,788,false],"thumbnail":["https:\/\/bangtannow.com\/wp-content\/uploads\/2025\/01\/Calendario-BTS-Bangtan-Now-150x150.jpg",150,150,true],"medium":["https:\/\/bangtannow.com\/wp-content\/uploads\/2025\/01\/Calendario-BTS-Bangtan-Now-300x169.jpg",300,169,true],"medium_large":["https:\/\/bangtannow.com\/wp-content\/uploads\/2025\/01\/Calendario-BTS-Bangtan-Now-768x432.jpg",768,432,true],"large":["https:\/\/bangtannow.com\/wp-content\/uploads\/2025\/01\/Calendario-BTS-Bangtan-Now-1024x576.jpg",1024,576,true],"1536x1536":["https:\/\/bangtannow.com\/wp-content\/uploads\/2025\/01\/Calendario-BTS-Bangtan-Now.jpg",1400,788,false],"2048x2048":["https:\/\/bangtannow.com\/wp-content\/uploads\/2025\/01\/Calendario-BTS-Bangtan-Now.jpg",1400,788,false]},"uagb_author_info":{"display_name":"Vic Passini","author_link":"https:\/\/bangtannow.com\/en\/author\/vicksjrpgmail-com\/"},"uagb_comment_info":0,"uagb_excerpt":"BTS Calendar Stay up to date with all BTS events and releases! Here you\u2019ll find dates for concerts, TV appearances, [&hellip;]","_links":{"self":[{"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/pages\/5933","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/comments?post=5933"}],"version-history":[{"count":3,"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/pages\/5933\/revisions"}],"predecessor-version":[{"id":8891,"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/pages\/5933\/revisions\/8891"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/media\/5421"}],"wp:attachment":[{"href":"https:\/\/bangtannow.com\/en\/wp-json\/wp\/v2\/media?parent=5933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}