AI無法解決的Bug系列(一)跨時區日期過濾問題

跨時區開發中,React Native如何處理新西蘭的日期過濾問題

有些Bug,不是你寫錯代碼,而是現實太魔幻

比如我最近給新西蘭客戶開發一個React Native應用,功能非常樸素:用戶選一個日期范圍,系統返回該范圍內的日志。

很簡單對吧?結果客戶連著幾天發消息抱怨:

“我選 4 月 30 日,結果一個日志都沒有。”
“我選 29 到 30 日,它卻只給我 28 日的內容?”

我這邊一看,數據庫明明有數據,接口邏輯也沒問題。我自己一測,一切正常。

奇怪的分界線:12 點

后來我逐漸發現一個微妙的規律:客戶上午測試就報錯,我這邊是中午12點以后測試的,每次都正常。

這讓我突然意識到一個關鍵問題——新西蘭時區比UTC快整整 12 或 13 小時(取決于是否夏令時)

所以客戶早上選“今天”的時候,其實是:

  • 新西蘭時間:2025-04-30 09:00
  • 轉成UTC:2025-04-29 21:00

后臺拿到UTC一查:29 號?當然沒有 30 號的日志,客戶當然覺得你系統出錯。

AI登場:一本正經地告訴我“你沒轉換時區”

我讓AI幫忙分析,它第一句話就是:

“請將前端的日期轉換為 Pacific/Auckland 時區再傳給后端。”

我笑了。這當然是“正解”,可惜我們用的前端組件(DatePicker那一類)永遠返回的是UTC,你再怎么本地轉換,它最后還是給你一個 2025-04-29T12:00:00.000Z

這不就等于我洗了一遍手,又摸回原來的臟東西上。

插曲一:傳字符串行不行?

我一度覺得,既然組件不行,那干脆直接傳字符串吧,比如 "2025-04-30" 這種明明白白的格式。

于是我建議大家傳字符串,再在后端統一用 new Date("2025-04-30") 來解析。

聽起來確實不錯,結果一試……全系統幾十個地方涉及日期格式解析、比較、展示,全都要重寫,組件也不認字符串了,還得加一堆格式化處理。

我沉默了 5 秒鐘,打回這個提議。

還是太重了,傷筋動骨,放棄。

插曲二:傳個“假UTC”看看?

我靈光一閃:如果我硬要前端傳 UTC 時間,那我干脆就“騙”它一下好了!

用戶選 2025-04-30,我就手動往這個時間里加 12 或 13 小時,讓它看起來像 UTC,但其實它表示的是新西蘭時間。

比如:

// dateFrom: 2025-04-30T00:00:00 NZT
// -> 調整后發送:2025-04-29T12:00:00Z(UTC格式)

這樣一來:

  • 組件依舊開心,傳的是 Date
  • 后端邏輯不動,處理的是 UTC
  • 看上去合規,實際上我們偷偷塞了個“假的UTC”進去

我把這個方案告訴AI,它思考了兩秒鐘,回答說:

“唯一的缺點是,從技術嚴格性角度來看,這不是一個‘正確’的解決方案。但從實用角度看,它完全解決了問題,并且代碼干凈簡潔。”
“這種方法本質上是通過人為調整時間來補償時區差異,而不是通過標準的時區轉換機制。”

我:???
你前面怎么沒提這個方案?

只能說,AI的知識面再廣,它也想不到“騙時間”這種歪招——因為它不敢提這種方案,它太“正直”了,不像人類程序員這樣“又懶又壞還有效”。

最后的實現

我的方案非常簡單,只做兩件事:

  1. Intl.DateTimeFormat 獲取新西蘭當前偏移量(動態判斷是否夏令時)
  2. 在用戶選完日期后,手動加上這個小時數,直接塞進 Date 對象里傳給后端

后端收到的是標準UTC,但時間已經被我偷偷換過了。

業務邏輯不動,UI正常,所有日志都對上了。

const getNZOffsetHours = () => {try {const now = new Date();const formatter = new Intl.DateTimeFormat('en-US', {timeZone: 'Pacific/Auckland',timeZoneName: 'short'});const formatted = formatter.format(now); // e.g., "4/30/2025, NZST"const match = formatted.match(/GMT([+-]\d+)/);return match && match[1] ? parseInt(match[1], 10) : 12;} catch {return 12;}
};

有時候,最聰明的不是AI

你可以讓AI寫代碼、查bug、做重構。但它無法替代你站在“真實用戶”和“現有代碼”的縫隙中,找到那個最合適的、最省事的方案

這種Bug,就是典型的:

  • 你說它不是Bug吧,它確實出錯了;
  • 你說它是Bug吧,代碼哪哪都沒寫錯。

最終解決它的不是完美設計,而是一點點工程直覺和一點點狡猾。


這就是“AI無法解決的Bug系列”的第一篇。
如果你也踩過這種坑,別急著問AI,先問問自己:
我能不能騙一騙它?

下集見。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80665.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80665.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80665.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于天貓 API 的高效商品詳情頁實時數據接入方法解析

一、引言 在電商大數據分析、競品監控及智能選品等場景中,實時獲取天貓商品詳情頁數據是關鍵需求。本文將詳細解析通過天貓開放平臺 API 高效接入商品詳情數據的技術方案,涵蓋接口申請、數據獲取邏輯及代碼實現,幫助開發者快速構建實時數據采…

系分論文《論遺產系統演化》

系統分析師論文范文系列 摘要 2022年6月,某金融機構啟動核心業務系統的技術升級項目,旨在對其運行超過十年的遺留系統進行演化改造。該系統承擔著賬戶管理、支付結算等關鍵業務功能,但其技術架構陳舊、擴展性不足,難以適應數字化轉型與業務快速增長的需求。作為系統分析師,…

Spark Core基礎與源碼剖析全景手冊

Spark Core基礎與源碼剖析全景手冊 Spark作為大數據領域的明星計算引擎,其核心原理、源碼實現與調優方法一直是面試和實戰中的高頻考點。本文將系統梳理Spark Core與Hadoop生態的關系、經典案例、聚合與分區優化、算子底層原理、集群架構和源碼剖析,結合…

人工智能賦能產業升級:AI在智能制造、智慧城市等領域的應用實踐

人工智能賦能產業升級:AI在智能制造、智慧城市等領域的應用實踐 近年來,人工智能(AI)技術的快速發展為各行各業帶來了深刻的變革。無論是制造業、城市管理,還是交通、醫療等領域,AI技術都展現出了強大的應用…

React Native打包報錯: Task :react-native-picker:verifyReleaseResources FAILE

RN打包報錯: Task :react-native-picker:verifyReleaseResources FAILED Execution failed for task :react-native-picker:verifyReleaseResources. 解決方法: 修改文件react-native-picker中的版本信息。 路徑:node_modules/react-native-p…

虛擬網絡編輯器

vmnet1 僅主機模式 hostonly 功能:虛擬機只能和宿主機通過vmnet1通信,不可連接其他網絡(包括互聯網) vmnet8 地址轉換模式 NAT 功能:虛擬機可以和宿主通過vmnet8通信,并且可以連接其他網絡,但是…

docker環境和dockerfile制作

docker 一、環境和安裝 1、 docker安裝 使用 root 權限登錄 CentOS。確保 yum 包更新到最新sudo yum update卸載舊版本yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux …

[luogu12542] [APIO2025] 排列游戲 - 交互 - 博弈 - 分類討論 - 構造

傳送門:https://www.luogu.com.cn/problem/P12542 題目大意:給定一個長為 n n n 的排列和一張 m m m 個點 e e e 條邊的簡單連通圖。每次你可以在圖上每個點設置一個 0 ~ n ? 1 0\sim n-1 0~n?1、兩兩不同的權值發給交互庫,交互庫會…

智能體agent概述

智能體概述 智能體是一個能夠感知環境并在環境中自主行動以實現特定目標的系統。它具有以下幾個關鍵特征: 自主性 - 智能體可以在沒有直接人為干預的情況下運作,能夠自行決策和行動。 響應性 - 能夠感知環境并對環境變化做出及時響應。 主動性 - 不僅…

2:OpenCV—加載顯示圖像

加載和顯示圖像 從文件和顯示加載圖像 在本節中&#xff0c;我將向您展示如何使用 OpenCV 庫函數從文件加載圖像并在窗口中顯示圖像。 首先&#xff0c;打開C IDE并創建一個新項目。然后&#xff0c;必須為 OpenCV 配置新項目。 #include <iostream> #include <ope…

python訓練 60天挑戰-day31

知識點回顧 規范的文件命名規范的文件夾管理機器學習項目的拆分編碼格式和類型注解 昨天我們已經介紹了如何在不同的文件中&#xff0c;導入其他目錄的文件&#xff0c;核心在于了解導入方式和python解釋器檢索目錄的方式。 搞清楚了這些&#xff0c;那我們就可以來看看&#x…

構建自動收集并總結互聯網熱門話題的網站

構建自動收集并總結互聯網熱門話題的網站的具體方案&#xff1a; 一、系統架構設計 數據采集層 ? 使用Python的Scrapy或BeautifulSoup抓取新聞網站/社交媒體API # 示例&#xff1a;微博熱點爬蟲 import requests def fetch_weibo_hot():url "https://weibo.com/ajax/st…

pycharm無需科學上網工具下載插件的解決方案

以下是兩種無需科學上網即可下載 PyCharm 插件的解決思路&#xff1a; 方法 1&#xff1a;設置 PyCharm 代理 打開 PyCharm選擇菜單&#xff1a;File → Settings → Appearance & Behavior → System Settings → HTTP Proxy在代理設置中進行如下配置&#xff1a; 代理地…

機器學習自然語言處理

在自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;詞向量&#xff08;Word Embedding&#xff09;是將人類語言轉化為計算機可理解形式的關鍵技術。它通過數學空間中的向量表示&#xff0c;捕捉詞語的語義和語法信息&#xff0c;有效解決了傳統離散表示的 “維數災難…

如何自學FPGA設計?

眾所周知&#xff0c;FPGA設計自學難度不小&#xff0c;更不存在速成的捷徑。這里簡單說一下學習的規劃&#xff0c;希望能給入門者提供一些方向。 學會相應的知識 不論是科班畢業還是理工科專業出身&#xff0c;想要入行FPGA開發&#xff0c;基礎知識必須扎實。尤其是在高校…

南航無人機大規模戶外環境視覺導航框架!SM-CERL:基于語義地圖與認知逃逸強化學習的無人機戶外視覺導航

作者&#xff1a; Shijin Zhao, Fuhui Zhou, Qihui Wu單位&#xff1a;南京航空航天大學電子信息工程學院論文標題&#xff1a; UAV Visual Navigation in the Large-Scale Outdoor Environment: A Semantic Map-Based Cognitive Escape Reinforcement Learning Method論文鏈接…

Linux-進程間通信

1.進程間通信介紹 1.1通信目的 數據傳輸&#xff1a;?個進程需要將它的數據發送給另?個進程 資源共享&#xff1a;多個進程之間共享同樣的資源。 通知事件&#xff1a;?個進程需要向另?個或?組進程發送消息&#xff0c;通知它&#xff08;它們&#xff09;發?了某種事…

精益數據分析(69/126):最小可行化產品(MVP)的設計、驗證與數據驅動迭代

精益數據分析&#xff08;69/126&#xff09;&#xff1a;最小可行化產品&#xff08;MVP&#xff09;的設計、驗證與數據驅動迭代 在創業旅程中&#xff0c;從需求洞察到產品落地的關鍵一躍是打造最小可行化產品&#xff08;MVP&#xff09;。今天&#xff0c;我們結合《精益…

從JavaScript快速上手Python:關鍵差異與核心技巧

引言 如果你是JavaScript開發者&#xff0c;可能會對Python的簡潔語法和豐富的生態感興趣。但兩種語言的設計哲學和實現細節存在顯著差異。本文將通過對比JS與Python的核心概念&#xff0c;幫助你快速過渡&#xff0c;避免“踩坑”。 一、語法差異&#xff1a;告別大括號&#…

TransmittableThreadLocal實現上下文傳遞-筆記

1.TransmittableThreadLocal簡介 com.alibaba.ttl.TransmittableThreadLocal&#xff08;簡稱 TTL&#xff09;是阿里巴巴開源的一個工具類&#xff0c;旨在解決 ThreadLocal 在線程池中無法傳遞上下文變量 的問題。它是對 InheritableThreadLocal 的增強&#xff0c;尤其適用…