JavaScript實現(xiàn)獲取年月日時間的方法總結(jié)
首先介紹時間的獲取
// 獲取當前時間
let currentTime = new Date();
// 獲取年份
let year = currentTime.getFullYear();
// 獲取月份(注意月份是從0開始計數(shù)的,所以需要加1)
let month = currentTime.getMonth() + 1;
// 獲取日期
let day = currentTime.getDate();
// 獲取小時
let hours = currentTime.getHours();
// 獲取分鐘
let minutes = currentTime.getMinutes();
// 獲取秒數(shù)
let seconds = currentTime.getSeconds();
// 獲取毫秒數(shù)
let milliseconds = currentTime.getMilliseconds();
// 格式化時間為 YYYY-MM-DD
let formattedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
// 格式化時間為 HH:MM:SS
let formattedTime = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
// 格式化時間為 YYYY-MM-DD HH:MM:SS
let formattedDateTime = `${formattedDate} ${formattedTime}`;
// 格式化時間為 MM/DD/YYYY
let formattedDateUS = `${month.toString().padStart(2, '0')}/${day.toString().padStart(2, '0')}/${year}`;
// 格式化時間為 HH:MM AM/PM
let formattedTime12Hour = `${hours % 12 || 12}:${minutes.toString().padStart(2, '0')} ${hours < 12 ? 'AM' : 'PM'}`;
console.log('當前時間:', currentTime);
console.log('年份:', year);
console.log('月份:', month);
console.log('日期:', day);
console.log('小時:', hours);
console.log('分鐘:', minutes);
console.log('秒數(shù):', seconds);
console.log('毫秒數(shù):', milliseconds);
console.log('格式化日期:', formattedDate);
console.log('格式化時間:', formattedTime);
console.log('格式化日期時間:', formattedDateTime);
console.log('格式化日期(美國格式):', formattedDateUS);
console.log('格式化12小時制時間:', formattedTime12Hour);獲取本月和上月的開始和結(jié)束日期
function getMonthDates() {
let today = new Date();
let year = today.getFullYear();
let month = today.getMonth();
let startOfMonth = new Date(year, month, 1);
let endOfMonth = new Date(year, month + 1, 0);
let startOfLastMonth = new Date(year, month - 1, 1);
let endOfLastMonth = new Date(year, month, 0);
return {
startOfMonth,
endOfMonth,
startOfLastMonth,
endOfLastMonth,
};
}
// 調(diào)用函數(shù)獲取本月和上月的日期范圍
let monthDates = getMonthDates();
console.log('本月的開始日期:', monthDates.startOfMonth);
console.log('本月的結(jié)束日期:', monthDates.endOfMonth);
console.log('上月的開始日期:', monthDates.startOfLastMonth);
console.log('上月的結(jié)束日期:', monthDates.endOfLastMonth);這個封裝的方案定義了一個名為 getMonthDates 的函數(shù),該函數(shù)根據(jù)當前日期獲取本月和上月的開始和結(jié)束日期,并返回一個包含這些日期的對象。然后,通過調(diào)用 getMonthDates 函數(shù)來獲取日期范圍,并將結(jié)果打印輸出。
這些封裝方案可以方便地獲取本月和上月的日期范圍,可以根據(jù)需要將其集成到你的項目中。
要獲取本季度和上季度的開始和結(jié)束日期
可以使用以下封裝方案:
function getQuarterDates() {
let today = new Date();
let year = today.getFullYear();
let month = today.getMonth();
let quarter = Math.floor(month / 3) + 1;
let startOfQuarter = new Date(year, (quarter - 1) * 3, 1);
let endOfQuarter = new Date(year, quarter * 3, 0);
let startOfLastQuarter = new Date(year, (quarter - 2) * 3, 1);
let endOfLastQuarter = new Date(year, (quarter - 1) * 3, 0);
return {
startOfQuarter,
endOfQuarter,
startOfLastQuarter,
endOfLastQuarter,
};
}
// 調(diào)用函數(shù)獲取本季度和上季度的日期范圍
let quarterDates = getQuarterDates();
console.log('本季度的開始日期:', quarterDates.startOfQuarter);
console.log('本季度的結(jié)束日期:', quarterDates.endOfQuarter);
console.log('上季度的開始日期:', quarterDates.startOfLastQuarter);
console.log('上季度的結(jié)束日期:', quarterDates.endOfLastQuarter);這個封裝的方案定義了一個名為 getQuarterDates 的函數(shù),該函數(shù)根據(jù)當前日期獲取本季度和上季度的開始和結(jié)束日期,并返回一個包含這些日期的對象。然后,通過調(diào)用 getQuarterDates 函數(shù)來獲取日期范圍,并將結(jié)果打印輸出。
要獲取上一年的開始和結(jié)束日期,可以使用以下封裝方案:
function getLastYearDates() {
let today = new Date();
let year = today.getFullYear();
let startOfYear = new Date(year - 1, 0, 1);
let endOfYear = new Date(year - 1, 11, 31);
return {
startOfYear,
endOfYear,
};
}
// 調(diào)用函數(shù)獲取上一年的日期范圍
let lastYearDates = getLastYearDates();
console.log('上一年的開始日期:', lastYearDates.startOfYear);
console.log('上一年的結(jié)束日期:', lastYearDates.endOfYear);這個封裝的方案定義了一個名為 getLastYearDates 的函數(shù),該函數(shù)根據(jù)當前日期獲取上一年的開始和結(jié)束日期,并返回一個包含這些日期的對象。然后,通過調(diào)用 getLastYearDates 函數(shù)來獲取日期范圍,并將結(jié)果打印輸出。
這些封裝方案可以方便地獲取本季度、上季度以及上一年的日期范圍,可以根據(jù)需要將其集成到你的項目中。
整體封裝
以下是一個封裝了獲取上月、本月、本季度、上季度和年度的開始和結(jié)束時間的方法:
function getDateRange() {
let today = new Date();
let year = today.getFullYear();
let month = today.getMonth();
let quarter = Math.floor(month / 3);
let startOfMonth = new Date(year, month, 1);
let endOfMonth = new Date(year, month + 1, 0);
let startOfLastMonth = new Date(year, month - 1, 1);
let endOfLastMonth = new Date(year, month, 0);
let startOfQuarter = new Date(year, quarter * 3, 1);
let endOfQuarter = new Date(year, quarter * 3 + 3, 0);
let startOfLastQuarter = new Date(year, (quarter - 1) * 3, 1);
let endOfLastQuarter = new Date(year, quarter * 3, 0);
let startOfYear = new Date(year, 0, 1);
let endOfYear = new Date(year, 11, 31);
return {
startOfMonth,
endOfMonth,
startOfLastMonth,
endOfLastMonth,
startOfQuarter,
endOfQuarter,
startOfLastQuarter,
endOfLastQuarter,
startOfYear,
endOfYear,
};
}
// 調(diào)用函數(shù)獲取日期范圍
let dateRange = getDateRange();
console.log('本月的開始日期:', dateRange.startOfMonth);
console.log('本月的結(jié)束日期:', dateRange.endOfMonth);
console.log('上月的開始日期:', dateRange.startOfLastMonth);
console.log('上月的結(jié)束日期:', dateRange.endOfLastMonth);
console.log('本季度的開始日期:', dateRange.startOfQuarter);
console.log('本季度的結(jié)束日期:', dateRange.endOfQuarter);
console.log('上季度的開始日期:', dateRange.startOfLastQuarter);
console.log('上季度的結(jié)束日期:', dateRange.endOfLastQuarter);
console.log('本年度的開始日期:', dateRange.startOfYear);
console.log('本年度的結(jié)束日期:', dateRange.endOfYear);這個封裝的方法定義了一個名為 getDateRange 的函數(shù),該函數(shù)根據(jù)當前日期獲取上月、本月、本季度、上季度和年度的開始和結(jié)束時間,并返回一個包含這些時間的對象。然后,通過調(diào)用 getDateRange 函數(shù)來獲取日期范圍,并將結(jié)果打印輸出。
這個封裝方案可以方便地獲取上月、本月、本季度、上季度和年度的開始和結(jié)束時間,可以根據(jù)需要將其集成到你的項目中。
使用場景和優(yōu)缺點
上月、本月、本季度、上季度和年度的開始和結(jié)束時間可以在各種場景下使用,特別是與時間相關(guān)的數(shù)據(jù)分析、報表生成和業(yè)務邏輯計算等方面。以下是一些常見的使用場景:
數(shù)據(jù)分析和報表生成:在數(shù)據(jù)分析和報表生成過程中,經(jīng)常需要按照時間范圍進行數(shù)據(jù)篩選和計算。使用上月、本月、本季度、上季度和年度的開始和結(jié)束時間可以方便地獲取對應的時間范圍,從而準確地提取和計算相應的數(shù)據(jù)。
業(yè)務邏輯計算:在一些業(yè)務邏輯計算中,需要根據(jù)時間范圍進行特定的計算和判斷。例如,統(tǒng)計上月銷售額、計算本季度的利潤等。使用上月、本月、本季度、上季度和年度的開始和結(jié)束時間可以方便地獲取相應的時間范圍,從而進行業(yè)務邏輯計算。
時間過濾和查詢:在數(shù)據(jù)庫查詢和數(shù)據(jù)篩選中,經(jīng)常需要根據(jù)時間范圍進行數(shù)據(jù)過濾和查詢。使用上月、本月、本季度、上季度和年度的開始和結(jié)束時間可以方便地構(gòu)建查詢條件,從而獲取符合時間范圍要求的數(shù)據(jù)。
優(yōu)點:
方便:使用上月、本月、本季度、上季度和年度的開始和結(jié)束時間,可以方便地獲取相應的時間范圍,避免手動計算和輸入時間范圍的麻煩。
精確:根據(jù)當前日期動態(tài)計算時間范圍,確保獲取的時間范圍準確無誤。
可復用:封裝成方法后,可以在不同的場景中反復使用,提高代碼的復用性和效率。
缺點:
依賴于系統(tǒng)時間:獲取的時間范圍依賴于系統(tǒng)時間,如果系統(tǒng)時間不準確或被修改,可能會導致獲取的時間范圍不準確。
邏輯復雜性:計算上月、本月、本季度、上季度和年度的開始和結(jié)束時間涉及一定的邏輯復雜性,需要考慮月份和季度的邊界情況,可能需要處理一些特殊情況的邏輯。
綜上所述,上月、本月、本季度、上季度和年度的開始和結(jié)束時間在數(shù)據(jù)分析、報表生成和業(yè)務邏輯計算等場景中非常有用,可以方便地獲取對應的時間范圍。但需要注意系統(tǒng)時間的準確性和處理邏輯復雜性。
到此這篇關(guān)于JavaScript實現(xiàn)獲取年月日時間的方法總結(jié)的文章就介紹到這了,更多相關(guān)JavaScript獲取時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript中通過arguments參數(shù)偽裝方法重載
面向?qū)ο蟮母呒壵Z言中,都有方法的重載,在js中可以通過arguments這個參數(shù)來偽裝成函數(shù)重載,具體如下2014-10-10
微信小程序?qū)崿F(xiàn)點餐小程序左側(cè)滑動菜單
這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)點餐小程序左側(cè)滑動菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07
javascript讓setInteval里的函數(shù)參數(shù)中的this指向特定的對象
話說阿里巴巴今年的校園招聘有一道題目考了一個知識點,那就是setInterval的參數(shù)函數(shù)里的this指向.2010-01-01

