其實想法很簡單,因為我們經常要客製化各種日曆,其實已經寫了不知道多少次了,但因為每次的客製化需求都不同,都是重寫...這次想說是不是可以乾脆寫一個 Function 未來全部可以共用呢?
以往我們可以使用 datepicker 的各種套件來改裝,但程式寫越久,真的越不喜歡改裝這件事,要很累的瘋狂查文件、很累的各種碰壁、很累的暴力硬改...,如果有用過 https://element.eleme.io/ 這種 UI 框架,更會覺得需要改到懷疑人生。
這篇文章 寫寫【Codepen】吧 - 無限滾動日曆 我們已經寫過滾動的日曆。
這次想說既然客製化程度這麼高,連日曆都需要滾動生成,那乾脆就請 AI 幫我寫成可複用的功能吧~
先想好主要的目的功能是什麼
因為經常客製化,所以為了保留彈性,我這次只需要這個 Function 可以幫我簡單的 return 出我要當月份的格子即可。
所以為了未來擴充的可能性,我想要只輸入日期,即可得到當月份的所有格子,並且包含上下個月,然後我們都是都是使用 dayjs,所以也請他使用 dayjs 的方式來寫給我。
請幫我使用 dayjs() 寫一個日曆使用的函式,這個函式只需要用 dayjs() 帶入當天的日期,就可以算出該月份所有日期,並且包含該月份第一週所涵蓋的上個月日期,以及這個月份最後一週所涵蓋的下個月日期。最後回傳出所有日期的陣列。
Chat GPT 回答:
以下是使用 dayjs() 的函式,用於取得某個月份的所有日期,包括上個月和下個月的日期
function getMonthDates(date) {
const firstDayOfMonth = dayjs(date).startOf('month');
const lastDayOfMonth = dayjs(date).endOf('month');
const startOfWeek = firstDayOfMonth.startOf('week');
const endOfWeek = lastDayOfMonth.endOf('week');
const dates = [];
let currentDay = startOfWeek;
while (currentDay.isBefore(endOfWeek)) {
dates.push(currentDay);
currentDay = currentDay.add(1, 'day');
}
return dates;
}
這個函式接受一個日期作為參數,並返回一個陣列,其中包含指定月份的所有日期。在函式內部,首先使用 startOf('month') 和 endOf('month') 方法來取得該月份的第一天和最後一天。接著使用 startOf('week') 和 endOf('week') 方法來取得該月份第一週和最後一週的日期。最後,使用 add() 方法和一個 while 迴圈來填充整個月份的日期,並將它們加入一個陣列中。
看完 Code 之後發現,哇塞!竟然比我自己原本寫的還精簡啊!
而且竟然沒有錯誤,太強了。未來我只要輸入當天日期就可以拿到該月份所有格子, 如果我沒指定日期只想要該月份的資料,我只需要變成輸入當月第一天即可。真是太不可思議了,整個過程只有 2 分鐘。
當下做出來時非常的興奮,而開始做了更多難度更高的嘗試。但大多其實是失敗的。
詠唱魔法就跟哈利波特一樣,需要非常的精準
詠唱 ChatGPT 需要非常的精準,如果描述得不夠準確,其實有時候都會給出錯誤的答案,如果你對該技術不夠熟悉,你也會無法辨別他回答的是否正確,就得去驗證、翻查 google。
未來 ChatGPT 會取代工程師嗎?
我覺得在某種程度上,跟做工、做生產的很像,當你的程式工作是重複性、可複製性時,那確實很容易被取代,就跟自動化生產出來時一樣。
但當你的工作是客製化高、需要提供多種解決方案策略討論的工程師,要被取代,幾乎在短時間內是非常困難的。
簡的來說,我還是非常看好 AI 未來的發展,畢竟我就是個 2077 控!~希望我有生之年能看到車在天上飛,有機器人幫我服務!滿足我這個科技控吧~