如何在 JavaScript 中檢查日期是否過去的一天

給定一個 JavaScript 日期,如何檢查它是否參考過去的某一天? 我遇到了這個問題:我想要檢查一個日期是否在參考的日期之前。 僅僅使用 getTime() 進行比較是不夠的,因為日期可能有不同的時間。 我最終使用了這個函數: const firstDateIsPastDayComparedToSecond = (firstDate, secondDate) => { if (firstDate.setHours(0,0,0,0) - secondDate.setHours(0,0,0,0) >= 0) { //第一個日期在未來,或者就是今天 return false; } return true; } 我使用 setHours() 來確保我們在同一個時間(00:00:00)比較兩個日期。 這是一個更簡潔、省略了內部返回部分的相同函數的版本: const firstDateIsPastDayComparedToSecond = (firstDate, secondDate) => firstDate.setHours(0,0,0,0) - secondDate.setHours(0,0,0,0) < 0; 以下是如何使用這個函數的簡單示例,將昨天與今天進行比較: const today = new Date(); const yesterday = new Date(today); yesterday.setDate(yesterday.getDate() - 1); firstDateIsPastDayComparedToSecond(yesterday, today); //true firstDateIsPastDayComparedToSecond(today, yesterday); //false

如何在 JavaScript 中檢查字串是否包含子字串

JavaScript 提供了很多方法可以檢查字串是否包含子字串。在這篇文章中,我們將學習到一個最常見、最推薦的做法,同時也會介紹其他一些方法。 檢查字串是否包含子字串是任何程式語言中最常見的任務之一。 JavaScript 提供了不同的方法來執行這個操作。 最簡單、也是最推薦的方法是使用字串的 includes() 方法: 'a nice string'.includes('nice') //true 這個方法在 ES6/ES2015 中被引入。 除了 Internet Explorer 外,現代瀏覽器都支援這個方法: 如果要在所有瀏覽器上使用這個方法,可以使用 Polyfill.io 或其他專用的 polyfill。 includes() 方法還接受可選的第二個參數,即起始搜尋的位置: 'a nice string'.includes('nice') //true 'a nice string'.includes('nice', 3) //false 'a nice string'.includes('nice', 2) //true ES6 之前的 includes() 替代方法:indexOf() 在 ES6 之前,檢查字串是否包含子字串的常見方法是使用 indexOf(),這是一個字串方法,如果字串中不包含指定子字串,則返回 -1。如果找到子字串,則返回子字串的起始索引。 和 includes() 一樣,第二個參數可以指定起始搜尋的位置: 'a nice string'.indexOf('nice') !== -1 //true 'a nice string'.indexOf('nice', 3) !== -1 //false 'a nice string'.indexOf('nice', 2) !== -1 //true

如何在 JavaScript 中檢查兩個日期是否是同一天

您如何檢測 JavaScript 中的日期對象實例是否引用了另一個日期對象的同一天? JavaScript 在其標準庫中沒有提供此功能,但您可以使用以下方法來實現: getDate() 返回日期的日期 getMonth() 返回日期的月份(從 0 開始,一月為 0) getFullYear() 返回日期的四位數年份 這是一個簡單的函數,您可以複製/粘貼來進行檢查: const datesAreOnSameDay = (first, second) => first.getFullYear() === second.getFullYear() && first.getMonth() === second.getMonth() && first.getDate() === second.getDate(); 範例用法: datesAreOnSameDay(new Date(), new Date()) // 返回 true

如何在 JavaScript 中獲取元素的滾動位置

當在瀏覽器中建立用戶界面時,您可能會遇到一個可以滾動的元素,了解它目前的水平和垂直滾動位置是常見的需求。 那麼,該如何做到這點呢? 一旦獲取了該元素,您可以檢查其 scrollLeft 和 scrollTop 屬性。 0, 0 的位置始終位於左上角,因此任何滾動都是相對於該位置的。 示例: const container = document.querySelector('.container') container.scrollTop container.scrollLeft 這些屬性是可讀寫的,因此您還可以設置滾動位置: const container = document.querySelector('.container') container.scrollTop = 1000 container.scrollLeft = 1000

如何在 JavaScript 中獲取當前的時間戳

了解 JavaScript 提供了哪些方法來生成當前的 UNIX 時間戳。 UNIX 時間戳是一個整數,表示從 1970 年 1 月 1 日開始的秒數。 在像 Linux 和 macOS 這樣的 UNIX-like 系統上,你可以在終端中輸入 date +%s,然後獲取到 UNIX 時間戳: $ date +%s 1524379940 在 JavaScript 中,可以通過調用 Date 對象的 now() 方法獲取當前的時間戳: Date.now() 你也可以通過以下方式獲取相同的值: new Date().getTime() 或者 new Date().valueOf() 注意:IE8 及以下版本的 Date 對象沒有 now() 方法。如果需要支持 IE8 及以下版本,請尋找一個 polyfill,或者在 Date.now 為未定義時使用 new Date().getTime()(因為這就是 polyfill 會做的事情)。 在 JavaScript 中,時間戳的表示是以毫秒為單位的。 要獲得以秒為單位的時間戳,可以使用下面的方式進行轉換: Math.floor(Date.now() / 1000) 注意:一些教程使用 Math.round(),但它會將值近似到下一秒,即使該秒還未完全結束。 或者,使用下面的方式,雖然可讀性較差: ~~(Date.now() / 1000) 我看到一些教程使用以下方式:...

如何在 JavaScript 物件中檢查是否存在特定的鍵

使用 JavaScript 物件時,你可以使用 in 運算子來檢查是否存在特定的鍵。 假設有一個 car 物件: const car = { color: 'blue' } 我們可以使用下面的語句來檢查 color 屬性是否存在,並且會返回 true: 'color' in car 我們可以將其用於條件判斷式中: if ('color' in car) { } 另一種方法是使用物件的 hasOwnProperty() 方法: car.hasOwnProperty('color') 當繼承在應用程式結構中扮演重要角色時,不同之處在於 in 運算子即使對於從父物件繼承的屬性也會返回 true,而 hasOwnProperty() 則不會。只有在物件直接擁有該屬性時,它才會返回 true,而不是其祖先物件之一。 如果你想要取得一個屬性,並且如果該屬性不存在則返回預設值,可以使用後備機制: car.brand || 'Ford' 如果物件上不存在 brand 屬性鍵,則該語句會返回字串 Ford。

如何在 JavaScript 陣列中獲取項目的索引

下面是根據值在 JS 陣列中檢索項目索引的方法。 假設您有一個包含在陣列中的項目的值,並且您想獲取其索引。 您該如何做到這一點? 如果項目是原始值,例如字符串或數字,您可以使用陣列的 indexOf 方法: const letters = ['a', 'b', 'c'] const index = letters.indexOf('b') //index 是 `1` 請記住,索引從數字 0 開始。 如果項目是物件,您無法使用這種方式,因為如果您嘗試這樣做: const letters = [ { letter: 'a', }, { letter: 'b', }, { letter: 'c', }, ] const index = letters.indexOf({ letter: 'b', }) index 將是 -1,這意味著未找到該項目。因為物件是按參考進行比較的,而不是按值進行比較(與原始類型不同)。傳遞給 indexOf 的物件是一個完全不同的物件,而不是陣列中的第二個項目。 您可以像這樣使用 findIndex 方法,它會遍歷陣列中的每個項目,並將元素和索引傳遞給運行的函式。從該函式返回的值將賦值給 findIndex 的返回值: const letters = [ { letter: 'a', }, { letter: 'b', }, { letter: 'c', }, ] const index = letters....

如何在 macOS Finder 中添加「在終端機中打開」圖示

假設我在 Finder 中打開了一個資料夾,而我想要在終端機中打開它。 為了讓這個操作更加方便,我決定在 Finder 中添加一個「在終端機中打開」圖示: 下面是如何實現這一點的方法。 首先打開 Automator,選擇「應用程式」。 在操作列表中搜索「執行 AppleScript」,然後粘貼以下內容: on run {input, parameters} tell application "Finder" set myPath to (POSIX path of (target of front window as alias)) end tell tell application "Terminal" do script "cd " & myPath activate end tell return input end run 如果你更喜歡使用「執行 Shell 腳本」,可以使用以下 Bash 腳本: osascript -e ' tell application "Finder" set myPath to (POSIX path of (target of front window as alias)) end tell tell application "Terminal" do script "cd " & myPath activate end tell ' 第一個腳本運行的是 osascript(這是一個運行 AppleScript 的腳本),內容如下:...

如何在 macOS Finder 中隱藏文件或文件夾

我對 macOS 在我的用戶文件夾中自動生成一個沒有任何理由的 Public 文件夾感到有些困擾。 我無法刪除它,因為這是一個系統文件夾。 所以我找到了一個方法來隱藏它。 打開終端並運行 chflags hidden <path> 命令,像這樣: chflags hidden Public 完成了! 如果需要將其恢復為可見,使用以下命令: chflags nohidden <path>

如何在 macOS 上安裝 PostgreSQL

安裝 PostgreSQL 資料庫管理系統的步驟指南 下面的指示是基於 macOS 安裝 PostgreSQL 的方式。 對於 Windows 和 Linux 使用者,請前往 https://www.postgresql.org/download/ 選擇適合的套件。 如果你使用其他平台,請搜尋「如何在 Windows 安裝 PostgreSQL」或「如何在 你的 Linux 發行版 安裝 PostgreSQL」。這些步驟不會有太大差異,尤其是在安裝階段之後。 在 macOS 上,我們會使用 Homebrew。如果你尚未安裝 Homebrew,請前往 https://brew.sh/ 並按照指示進行安裝。 完成後,返回終端機並執行以下命令: brew install postgresql 當安裝完成後,執行以下命令: brew services start postgresql 這將把 PostgreSQL 開啟作為背景服務聆聽連線。 使用 Homebrew 的好處是可以使用以下命令進行更新 brew upgrade postgresql brew postgresql-upgrade-database brew services restart postgresql postgresql 是 PostgreSQL 較難發音的名稱,但其實它們是同一個東西,只是在名稱中嵌入了 SQL。SQL 是什麼?SQL(發音為“sequel”)是結構化查詢語言(Structured Query Language)的簡稱,它是一種我們用於與關聯式資料庫進行互動的特殊語言。 如果你對資料庫是新手,這些術語可能讓你有點困惑!基本上,關聯式資料庫將資料組織到資料表中,並提供一種從這些資料表中插入和提取資料的方法。這就是 SQL。 驗證完 PostgresSQL 的登入設定後 返回終端機,輸入: psql postgres 這將給你進入 postgres 資料庫的權限,預設該資料庫與你的 macOS 使用者名稱相同。Homebrew 在安裝時會自動建立你的使用者。...