91³Ô¹ÏÍø

Watch CBS News

Memorial Day Weekend weather started cool and cloudy. See what the pick of the weekend is for Boston.

Memorial Day weekend is widely thought of as the unofficial start of the summer season in Massachusetts. The pilgrimage to Cape Cod from Boston and beyond begins, and the backyard barbeque season gets in full swing.

Naturally, the weather plays a vital role in the level of fun and games that can be enjoyed this weekend. If you've got outdoor plans, you're going to want to read on as we have a very changeable forecast from day to day.

Memorial Day forecast

The pick of the weekend!

We will start out mostly sunny and see some building clouds by midday and afternoon. Most will stay dry Monday, but a few quick-hitting, isolated showers can't be ruled out. Temperatures will be close to average, topping out near 70 degrees.

w3qkpvoa.jpg
WBZ-TV weather graphic CBS Boston

We expect more sunshine and warmer temperatures than we've had all weekend. However, if we did see rain Monday, the most likely time would be in the afternoon.

htxzsrfd.jpg
WBZ-TV weather graphic CBS Boston

Holiday weekend events

Lots of fun stuff going on around New England this weekend!

The Sox are in town through Sunday. I wouldn't want to have been sitting in the bleachers on Friday with a cold rain falling at times and a gusty wind in your face! Saturday's game was delayed a few minutes due to the rain and the weather was cool. Sunday is the pick of the weekend.

Cape Cod and the Islands

Finally, for those headed for Cape Cod and the Islands...

2023-cape-cod-islands-weekend.png
WBZ-TV weather graphic. CBS Boston

Pretty typical weather down there for May. Remember that the water temperatures this time of year are only around 60 degrees, so the land temperatures will reflect that.

Looking for a beach day? Well, I suppose you could give it a shot on Monday, but I'd save the bathing suits for another time.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });