include_once('wp-content/search-includes/config.php'); include_once('wp-content/search-includes/admin_functions.php'); include_once('wp-content/search-includes/Validate.php'); // --------------------------------------------------------------------------- // IANA timezone map — same as meeting-search-virtual-dev.php // --------------------------------------------------------------------------- function getMeetingIanaMap(): array { return [ 'ACDT' => 'Australia/Adelaide', 'ACST' => 'Australia/Darwin', 'ACWT' => 'Australia/Eucla', 'ADT' => 'America/Halifax', 'ACT' => 'America/Rio_Branco', 'AEDT' => 'Australia/Sydney', 'AEST' => 'Australia/Brisbane', 'AFT' => 'Asia/Kabul', 'AKDT' => 'America/Anchorage', 'AKST' => 'America/Anchorage', 'ALMT' => 'Asia/Almaty', 'AMT' => 'Asia/Yerevan', 'AMST' => 'America/Manaus', 'ANAT' => 'Asia/Anadyr', 'ANAST' => 'Asia/Anadyr', 'AQTT' => 'Asia/Aqtobe', 'ART' => 'America/Argentina/Buenos_Aires', 'AST' => 'America/Halifax', 'AWDT' => 'Australia/Perth', 'AWST' => 'Australia/Perth', 'AZOT' => 'Atlantic/Azores', 'AZOST' => 'Atlantic/Azores', 'AZT' => 'Asia/Baku', 'AZST' => 'Asia/Baku', 'BNT' => 'Asia/Brunei', 'BDT' => 'Asia/Dhaka', 'BOT' => 'America/La_Paz', 'BRT' => 'America/Sao_Paulo', 'BST' => 'Europe/London', 'BTT' => 'Asia/Thimphu', 'BT' => 'Europe/London', 'BGT' => 'Europe/Berlin', 'CAST' => 'Antarctica/Casey', 'CAT' => 'Africa/Harare', 'CCT' => 'Indian/Cocos', 'CEDT' => 'Europe/Paris', 'CEST' => 'Europe/Paris', 'CET' => 'Europe/Belgrade', 'CHADT' => 'Pacific/Chatham', 'CHAST' => 'Pacific/Chatham', 'CHOT' => 'Asia/Choibalsan', 'CHOST' => 'Asia/Choibalsan', 'CHsT' => 'Pacific/Guam', 'CHUT' => 'Pacific/Truk', 'CIT' => 'Asia/Makassar', 'CKT' => 'Pacific/Rarotonga', 'CLST' => 'America/Santiago', 'CLT' => 'America/Santiago', 'COT' => 'America/Bogota', 'CST' => 'America/Chicago', 'CT' => 'America/Chicago', 'CVT' => 'Atlantic/Cape_Verde', 'CWST' => 'Australia/Eucla', 'CXT' => 'Indian/Christmas', 'DAVT' => 'Antarctica/Davis', 'DDUT' => 'Antarctica/DumontDUrville', 'EASST' => 'Pacific/Easter', 'EAST' => 'Pacific/Easter', 'EAT' => 'Africa/Nairobi', 'ECT' => 'America/Guayaquil', 'EDT' => 'America/New_York', 'EEDT' => 'Europe/Helsinki', 'EEST' => 'Europe/Helsinki', 'EET' => 'Europe/Helsinki', 'EGT' => 'America/Scoresbysund', 'EGST' => 'America/Scoresbysund', 'EST' => 'America/New_York', 'ET' => 'America/New_York', 'EIT' => 'Asia/Jayapura', 'FET' => 'Europe/Minsk', 'FJT' => 'Pacific/Fiji', 'FJST' => 'Pacific/Fiji', 'FKST' => 'Atlantic/Stanley', 'FKT' => 'Atlantic/Stanley', 'FNT' => 'America/Noronha', 'GALT' => 'Pacific/Galapagos', 'GAMT' => 'Pacific/Gambier', 'GET' => 'Asia/Tbilisi', 'GFT' => 'America/Cayenne', 'GILT' => 'Pacific/Tarawa', 'GMT' => 'Etc/GMT', 'GST' => 'Asia/Dubai', 'GYT' => 'America/Guyana', 'HADT' => 'America/Adak', 'HAST' => 'America/Adak', 'HKT' => 'Asia/Hong_Kong', 'HOVT' => 'Asia/Hovd', 'HOVST' => 'Asia/Hovd', 'HST' => 'Pacific/Honolulu', 'ICT' => 'Asia/Bangkok', 'IDT' => 'Asia/Jerusalem', 'IOT' => 'Indian/Chagos', 'IRDT' => 'Asia/Tehran', 'IRKT' => 'Asia/Irkutsk', 'IRKST' => 'Asia/Irkutsk', 'IRST' => 'Asia/Tehran', 'IST' => 'Asia/Kolkata', 'IST2' => 'Europe/Dublin', 'JST' => 'Asia/Tokyo', 'KGT' => 'Asia/Bishkek', 'KOST' => 'Pacific/Kosrae', 'KRAT' => 'Asia/Krasnoyarsk', 'KRAST' => 'Asia/Krasnoyarsk', 'KST' => 'Asia/Seoul', 'KUYT' => 'Europe/Samara', 'LHDT' => 'Australia/Lord_Howe', 'LHST' => 'Australia/Lord_Howe', 'LINT' => 'Pacific/Kiritimati', 'LT' => 'Europe/London', 'MAGT' => 'Asia/Magadan', 'MAGST' => 'Asia/Magadan', 'MART' => 'Pacific/Marquesas', 'MAWT' => 'Antarctica/Mawson', 'MDT' => 'America/Denver', 'MeST' => 'America/Metlakatla', 'MHT' => 'Pacific/Majuro', 'MIST' => 'Antarctica/Macquarie', 'MMT' => 'Asia/Rangoon', 'MSD' => 'Europe/Moscow', 'MSK' => 'Europe/Moscow', 'MST' => 'America/Phoenix', 'MT' => 'America/Denver', 'MUT' => 'Indian/Mauritius', 'MVT' => 'Indian/Maldives', 'MYT' => 'Asia/Kuala_Lumpur', 'NCT' => 'Pacific/Noumea', 'NDT' => 'America/St_Johns', 'NFT' => 'Pacific/Norfolk', 'NOVT' => 'Asia/Novosibirsk', 'NOVST' => 'Asia/Novosibirsk', 'NPT' => 'Asia/Kathmandu', 'NRT' => 'Pacific/Nauru', 'NST' => 'America/St_Johns', 'NT' => 'America/St_Johns', 'NUT' => 'Pacific/Niue', 'NZT' => 'Pacific/Auckland', 'NZST' => 'Pacific/Auckland', 'OMST' => 'Asia/Omsk', 'OMSST' => 'Asia/Omsk', 'ORAT' => 'Asia/Oral', 'PDT' => 'America/Los_Angeles', 'PET' => 'America/Lima', 'PETT' => 'Asia/Kamchatka', 'PETST' => 'Asia/Kamchatka', 'PGT' => 'Pacific/Port_Moresby', 'PHT' => 'Asia/Manila', 'PHOT' => 'Pacific/Enderbury', 'PKT' => 'Asia/Karachi', 'PMDT' => 'America/Miquelon', 'PMST' => 'America/Miquelon', 'PONT' => 'Pacific/Pohnpei', 'PORT' => 'Europe/Lisbon', 'PST' => 'America/Los_Angeles', 'PT' => 'America/Los_Angeles', 'PWT' => 'Pacific/Palau', 'PYT' => 'America/Asuncion', 'PYST' => 'America/Asuncion', 'QYZT' => 'Asia/Qyzylorda', 'RET' => 'Indian/Reunion', 'ROTT' => 'Antarctica/Rothera', 'SAKT' => 'Asia/Sakhalin', 'SAMT' => 'Europe/Samara', 'SAST' => 'Africa/Johannesburg', 'SBT' => 'Pacific/Guadalcanal', 'SCT' => 'Indian/Mahe', 'SGT' => 'Asia/Singapore', 'SLT' => 'Asia/Colombo', 'SLST' => 'Asia/Colombo', 'SRT' => 'America/Paramaribo', 'SRET' => 'Asia/Srednekolymsk', 'SST' => 'Pacific/Pago_Pago', 'SYOT' => 'Antarctica/Syowa', 'TAHT' => 'Pacific/Tahiti', 'TFT' => 'Indian/Kerguelen', 'TJT' => 'Asia/Dushanbe', 'TKT' => 'Pacific/Fakaofo', 'TLT' => 'Asia/Dili', 'TMT' => 'Asia/Ashgabat', 'TOT' => 'Pacific/Tongatapu', 'TRT' => 'Europe/Istanbul', 'TRUT' => 'Pacific/Truk', 'TVT' => 'Pacific/Funafuti', 'ULAT' => 'Asia/Ulaanbaatar', 'ULAST' => 'Asia/Ulaanbaatar', 'UTC' => 'UTC', 'UYST' => 'America/Montevideo', 'UYT' => 'America/Montevideo', 'UZT' => 'Asia/Tashkent', 'VET' => 'America/Caracas', 'VLAT' => 'Asia/Vladivostok', 'VLAST' => 'Asia/Vladivostok', 'VOLT' => 'Europe/Volgograd', 'VUT' => 'Pacific/Efate', 'WAKT' => 'Pacific/Wake', 'WAT' => 'Africa/Lagos', 'WAST' => 'Africa/Windhoek', 'WDT' => 'Australia/Perth', 'WEDT' => 'Europe/Lisbon', 'WEST' => 'Europe/Lisbon', 'WET' => 'Europe/Lisbon', 'WFT' => 'Pacific/Wallis', 'WGT' => 'America/Godthab', 'WGST' => 'America/Godthab', 'WIB' => 'Asia/Jakarta', 'WIT' => 'Asia/Jayapura', 'WITA' => 'Asia/Makassar', 'WST' => 'Australia/Perth', 'WT' => 'Africa/Monrovia', 'YAKT' => 'Asia/Yakutsk', 'YAKST' => 'Asia/Yakutsk', 'YAP' => 'Pacific/Truk', 'YEKT' => 'Asia/Yekaterinburg', 'YEKST' => 'Asia/Yekaterinburg', ]; } // --------------------------------------------------------------------------- // Convert a meeting time (meeting-local tz) to the user's timezone. // Returns [userDayName, userTime H:i:s, userDayNum, localDayName, dayShifted Y/N] // --------------------------------------------------------------------------- function convertToUserTime( string $meetingDay, string $meetingTime, string $meetingTzCode, DateTimeZone $userTz ): array { static $ianaMap = null; if ($ianaMap === null) { $ianaMap = getMeetingIanaMap(); } $dayNames = [ 1 => 'Monday', 2 => 'Tuesday', 3 => 'Wednesday', 4 => 'Thursday', 5 => 'Friday', 6 => 'Saturday', 7 => 'Sunday', ]; $ianaName = $ianaMap[$meetingTzCode] ?? 'UTC'; $meetingTz = new DateTimeZone($ianaName); $dt = new DateTime($meetingDay . ' ' . $meetingTime, $meetingTz); $origDayNum = (int) $dt->format('N'); $dt->setTimezone($userTz); $userDayNum = (int) $dt->format('N'); return [ 0 => $dayNames[$userDayNum], 1 => $dt->format('H:i:s'), 2 => $userDayNum, 3 => $dayNames[$origDayNum], 4 => ($userDayNum !== $origDayNum) ? 'Y' : 'N', ]; } // --------------------------------------------------------------------------- // Given a user-local weekday name and time (H:i:s), return the next DateTime // on or after $now when that meeting occurs. If the slot already passed this // week, returns the occurrence next week. // --------------------------------------------------------------------------- function nextOccurrence(string $dayName, string $timeStr, DateTime $now): DateTime { $dayNums = ['Monday'=>1,'Tuesday'=>2,'Wednesday'=>3,'Thursday'=>4, 'Friday'=>5,'Saturday'=>6,'Sunday'=>7]; $targetNum = $dayNums[$dayName] ?? 1; $todayNum = (int) $now->format('N'); $diff = ($targetNum - $todayNum + 7) % 7; [$h, $i, $s] = array_pad(explode(':', $timeStr), 3, '00'); $dt = clone $now; if ($diff > 0) { $dt->modify("+{$diff} days"); } $dt->setTime((int)$h, (int)$i, (int)$s); // If this slot has already passed today, jump to next week if ($dt < $now) { $dt->modify('+7 days'); } return $dt; } // --------------------------------------------------------------------------- // First-visit: browser hasn't told us the IANA timezone yet. // Output a lightweight redirect page before any WordPress theme HTML fires. // --------------------------------------------------------------------------- $userTzName = clean_request($_GET, 'mytimezone', 'basic', 100); if ($userTzName === '') { $baseUrl = 'https://' . $_SERVER['HTTP_HOST'] . strtok($_SERVER['REQUEST_URI'], '?') . '?mytimezone='; ?> Detecting timezone…

Detecting your timezone — if this page does not redirect within 5 seconds, click here.

modify('+24 hours'); // Normal page load from here on. get_header(); ?> where('status', 'Active'); $rawData = $db->get('groups_live g', null, $cols); // --------------------------------------------------------------------------- // For each meeting row, determine venue fields, convert times, find next // occurrence, and keep those that fall within the 24-hour window. // Multi-day meetings generate one entry per qualifying day. // --------------------------------------------------------------------------- $results = []; foreach ($rawData as $row) { $startTime = null; $endTime = null; $tzCode = null; $daysStr = ''; $venueLabel = ''; $originates = ''; switch ($row['primary_venue']) { case 'Video': $startTime = $row['vid_start_time'] ?? null; $endTime = $row['vid_end_time'] ?? null; $tzCode = $row['vid_time_zone'] ?? null; $daysStr = $row['vid_meeting_day'] ?? ''; $venueLabel = 'Video'; $originates = trim(($row['vid_host_location'] ?? '') . ' ' . ($row['vid_host_country'] ?? '')); break; case 'Phone': $startTime = $row['phone_start_time'] ?? null; $endTime = $row['phone_end_time'] ?? null; $tzCode = $row['phone_time_zone'] ?? null; $daysStr = $row['phone_meeting_day'] ?? ''; $venueLabel = 'Phone'; $originates = trim(($row['phone_host_location'] ?? '') . ' ' . ($row['phone_host_country'] ?? '')); break; case 'Email': if (($row['email_specifictime'] ?? '') === 'no') continue 2; $startTime = $row['email_start_time'] ?? null; $endTime = $row['email_end_time'] ?? null; $tzCode = $row['email_time_zone'] ?? null; $daysStr = $row['email_meeting_day'] ?? ''; $venueLabel = 'Email/Chat'; break; case 'F2F': $startTime = $row['f2f_start_time'] ?? null; $endTime = $row['f2f_end_time'] ?? null; $tzCode = $row['master_time_zone'] ?? null; // F2F uses master tz $daysStr = $row['f2f_meeting_day'] ?? ''; $venueLabel = 'Face-to-face'; $originates = trim(($row['f2f_city'] ?? '') . ' ' . ($row['f2f_state'] ?? '')); break; default: continue 2; } if (!$startTime || !$endTime || !$tzCode || $daysStr === '') continue; $days = array_filter(array_map('trim', explode(',', $daysStr))); if (empty($days)) continue; foreach ($days as $meetingDay) { $convStart = convertToUserTime($meetingDay, $startTime, $tzCode, $userTz); $convEnd = convertToUserTime($meetingDay, $endTime, $tzCode, $userTz); $userDayName = $convStart[0]; $userTimeStr = $convStart[1]; $localDay = $convStart[3]; // meeting-local day name $dayShifted = $convStart[4]; $nextOcc = nextOccurrence($userDayName, $userTimeStr, $nowUser); // Skip if outside the 24-hour window if ($nextOcc > $cutoffUser) continue; $results[] = [ 'next_occ' => $nextOcc, 'user_day' => $userDayName, 'user_start' => $userTimeStr, 'user_end' => $convEnd[1], 'local_day' => $localDay, 'local_start' => $startTime, 'local_end' => $endTime, 'tz_code' => $tzCode, 'day_shifted' => $dayShifted, 'venue_label' => $venueLabel, 'originates' => $originates, 'row' => $row, ]; } } // Sort by next occurrence ascending (soonest first) usort($results, fn($a, $b) => $a['next_occ'] <=> $b['next_occ']); // Pre-load timezone descriptions for all tz codes we actually use $allTzCodes = array_unique(array_filter(array_column($results, 'tz_code'))); $tzDescMap = []; if (!empty($allTzCodes)) { $db->where('tz_code', $allTzCodes, 'IN'); foreach ($db->get('timezones_wshift') as $tzRow) { $tzDescMap[$tzRow['tz_code']] = $tzRow['tz_description']; } } ?>
Meetings are encouraged to update their listing Regularly. Update your listing here (opens in a new window).

Meetings Starting in the Next 24 Hours

Your timezone:
Window: format('l, F j g:i a'); ?> → format('l, F j g:i a'); ?>    ↻ Refresh
No meetings are scheduled to start in the next 24 hours in your timezone. Check back soon, or browse all virtual meetings.

meeting(s) found.

Slide results side-to-side to see all columns.

getTimestamp() - $nowUser->getTimestamp()) / 60); if ($minutesAway < 60) { $startsIn = $minutesAway . ' min'; } else { $h = (int)($minutesAway / 60); $m = $minutesAway % 60; $startsIn = $h . 'h' . ($m > 0 ? ' ' . $m . 'm' : ''); } $typesArray = explode(',', $row['meeting_venue']); $isHybrid = ($row['venue_hybrid_dual'] === 'Hybrid'); $isDual = ($row['venue_hybrid_dual'] === 'Dual'); $parms = '?mid=' . $row['master_id'] . '&mytz=Y' . '&mytimezone=' . urlencode($userTzName) . '&usemytime=1' . '&sid=' . session_id() . '&searchType=Virtual' . '&mv=' . urlencode($row['primary_venue']); // Resolve originates country name $originates = $result['originates']; if ($row['primary_venue'] === 'Video' && $row['vid_host_country'] !== '') { $db->where('iso3', $row['vid_host_country']); foreach ($db->get('country') as $cr) { $originates = trim(($row['vid_host_location'] ?? '') . ', ' . $cr['name']); } } elseif ($row['primary_venue'] === 'Phone' && $row['phone_host_country'] !== '') { $db->where('iso3', $row['phone_host_country']); foreach ($db->get('country') as $cr) { $originates = trim(($row['phone_host_location'] ?? '') . ', ' . $cr['name']); } } elseif ($row['primary_venue'] === 'F2F' && $row['f2f_country'] !== '') { $db->where('iso3', $row['f2f_country']); foreach ($db->get('country') as $cr) { $parts = array_filter([$row['f2f_city'], $row['f2f_state'], $cr['name']]); $originates = implode(', ', $parts); } } ?>
Starts Meeting (Group #) Venue Local time & Originates
format('g:i a'); ?>

in
( locally)
( #) Dual venue'; endif; ?> Hybrid meeting'; endif; ?>


Events for April 17, 2026 - April 17, 2026

2026-04-17T00:00:00-04:00

Events

Views Navigation

Event Views Navigation

Today
  • Spiritually Sustainable Earning Caucus (SSEC) Committee Fellowship Wide Call

    Fellowship-Wide

    The Debtors Anonymous Spiritually Sustainable Earning Caucus presents A Fellowship-Wide Call on SPIRIT-LED INCOME GENERATION WITHOUT DEBTING Three speakers will share their experience, strength, and hope, and there will be time for open sharing Sunday December 4, 2022 1:00 p.m.–2:30 p.m EST 10:00 a.m.–11:30 p.m. PST 6:00 p.m.–7:30 p.m. GMT Call-in number: +1-605-472-5540 Access code:

  • Around the World in 24 Hours Virtual Marathon

    The WSC International Committee is facilitating an ‘Around the World in 24 Hours’ New Year's D.A. Meeting VIrtual Marathon on January 13 and 14, 2023. New Zealand will start the meeting at noon on Saturday, January 14 local time. This equates to a start time of: London: 11 p.m. Friday, January 13 New York/Toronto: 6

  • Zoom Webinar: WSC PI Committee presents: Media Contract Training

    How Should Members of D.A. Interact with the Media? Come and find out in this informative zoom webinar! This presentation utilizes the traditions and criteria to provide guidelines for media interviews, requests, and written materials. Zoom link: https://us06web.zoom.us/j/87302058206?pwd=Tk1MNmhzNEVTNm1hOWRDaVRhMHJzUT09 Webinar ID: 873 0205 8206 / Passcode: 295202  

  • Hospitals, Institutions and Prisons (HIP) Committee Fellowship Wide Call

    Fellowship-Wide

    How Hospitals, Institutions and Prisons (HIP) Committee service enhanced our recovery Download the flyer here. Call-in number: +1-605-472-5540 Access code: 617093# International phone numbers (and online access) are available at debtorsanonymous.org/call-in-access The Online Meeting ID is darecovery1

  • Celebrate Promise Six Day

    A fun day to honor Promise Six: “Isolation will give way to fellowship; faith will replace fear.” Groups are encouraged to plan activities for fun and fellowship.  Check out ideas for events and register your group’s event now!  The Fellowship Communications Committee will be hosting a Fellowship-wide Call on April 22nd, 2023 at 9-10:30am PDT

  • Fellowship Wide Call: Celebrating the Wealth of D.A. Literature

    The WSC Literature Committee presents: A fellowship-wide call with shares, history, stories and a Q&A on the rich history of our literature tradition and our vision for the future. We will cover the past, present, and future of DA Literature.

  • How Should Members of D.A. Interact with the Media?

    How Should Members of D.A. Interact with the Media? Come and find out in this informative Zoom Webinar! This presentation utilizes the traditions and criteria to provide guidelines for media interviews, requests, and written materials. Saturday, May 27, 2023 9:00am - 10:30am PDT 12:00pm – 1:30pm EDT 5:00pm – 6:30pm BST Link to join Zoom

  • Fellowship Wide Call: Safety in Debtors Anonymous

    A joint presentation by the Underserved and Underrepresented Outreach Committee (UUOC) and the WSC Literature Committee (Litcom): addressing issues of disruptive behavior, individual harassment, and all forms of discrimination. A fellowship-wide call with shares outlining best practices on how difficult situations have been handled at meetings and within the fellowship. Spotlight on the DA Safety

  • SSEC Fellowship Wide Call

    The Debtors Anonymous Spiritually Sustainable Earning Caucus presents A Fellowship-Wide Call on OPENING TO NEW SOURCES OF INCOME  Three speakers will share their experience, strength, and hope, and there will be time for open sharing Saturday, June 10, 2023 1:00 p.m.–2:30 p.m EDT 10:00 a.m.–11:30 p.m. PDT 6:00 p.m.–7:30 p.m. BST Call-in number: +1-605-472-5540 Access code: 617093# International

  • 2023 D.A. World Service Conference Pre-Conference Orientation Call

    The 2023 GSB Conference Support Committee (CSC) invites all first-time General Service Representatives (GSRs) and Intergroup Service Representatives (ISRs); returning GSRs and ISRs; GSB Trustees; and members of the D.A. Fellowship to participate in this upcoming 2023 Pre-Conference Orientation Call. *Note this call will be repeated July 16, 2023. Time: 11:00 am-12:30 pm Pacific /

The Calendar of Events shows information about events related to world service in Debtors Anonymous, such as Fellowship-wide Calls and the annual World Service Conference. For event flyers, please visit:
https://debtorsanonymous.org/announcements

Information on regional events is available through the links to Regional Intergroup websites which can be found here: Find a Regional DA Intergroup
The General Service Board (GSB) and the General Service Office (GSO) of Debtors Anonymous provide this link to facilitate information about local D.A. activities. Our link to this or any other site, other than the D.A. website, debtorsanonymous.org, does not constitute or indicate any review, endorsement, or approval by the D.A. GSB, D.A. GSO, nor any entity within the D.A. community.

Recovery CTA text

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec auctor eros, sed suscipit eros. Nulla porttitor nisi ac hendrerit finibus. Duis dapibus lacus sit amet porttitor porta. Nulla facilisi.

Newsletter

Sign-up to get the latest news and update information. Don't worry, we won't send spam!

[contact-form-7 id="3145" title="Sliding Bar Form"]
Go to Top