js获取时间(二) 年月日时间,各种格式的时间

首先介绍时间的获取

javascript 复制代码
// 获取当前时间
let currentTime = new Date();

// 获取年份
let year = currentTime.getFullYear();

// 获取月份(注意月份是从0开始计数的,所以需要加1)
let month = currentTime.getMonth() + 1;

// 获取日期
let day = currentTime.getDate();

// 获取小时
let hours = currentTime.getHours();

// 获取分钟
let minutes = currentTime.getMinutes();

// 获取秒数
let seconds = currentTime.getSeconds();

// 获取毫秒数
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('秒数:', seconds);
console.log('毫秒数:', milliseconds);
console.log('格式化日期:', formattedDate);
console.log('格式化时间:', formattedTime);
console.log('格式化日期时间:', formattedDateTime);
console.log('格式化日期(美国格式):', formattedDateUS);
console.log('格式化12小时制时间:', formattedTime12Hour);

要获取本月和上月的开始和结束日期

javascript 复制代码
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,
  };
}

// 调用函数获取本月和上月的日期范围
let monthDates = getMonthDates();

console.log('本月的开始日期:', monthDates.startOfMonth);
console.log('本月的结束日期:', monthDates.endOfMonth);
console.log('上月的开始日期:', monthDates.startOfLastMonth);
console.log('上月的结束日期:', monthDates.endOfLastMonth);

这个封装的方案定义了一个名为 getMonthDates 的函数,该函数根据当前日期获取本月和上月的开始和结束日期,并返回一个包含这些日期的对象。然后,通过调用 getMonthDates 函数来获取日期范围,并将结果打印输出。

这些封装方案可以方便地获取本月和上月的日期范围,可以根据需要将其集成到你的项目中。

要获取本季度和上季度的开始和结束日期

可以使用以下封装方案:

javascript 复制代码
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,
  };
}

// 调用函数获取本季度和上季度的日期范围
let quarterDates = getQuarterDates();

console.log('本季度的开始日期:', quarterDates.startOfQuarter);
console.log('本季度的结束日期:', quarterDates.endOfQuarter);
console.log('上季度的开始日期:', quarterDates.startOfLastQuarter);
console.log('上季度的结束日期:', quarterDates.endOfLastQuarter);

这个封装的方案定义了一个名为 getQuarterDates 的函数,该函数根据当前日期获取本季度和上季度的开始和结束日期,并返回一个包含这些日期的对象。然后,通过调用 getQuarterDates 函数来获取日期范围,并将结果打印输出。

要获取上一年的开始和结束日期,可以使用以下封装方案:

javascript 复制代码
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,
  };
}

// 调用函数获取上一年的日期范围
let lastYearDates = getLastYearDates();

console.log('上一年的开始日期:', lastYearDates.startOfYear);
console.log('上一年的结束日期:', lastYearDates.endOfYear);

这个封装的方案定义了一个名为 getLastYearDates 的函数,该函数根据当前日期获取上一年的开始和结束日期,并返回一个包含这些日期的对象。然后,通过调用 getLastYearDates 函数来获取日期范围,并将结果打印输出。

这些封装方案可以方便地获取本季度、上季度以及上一年的日期范围,可以根据需要将其集成到你的项目中。

整体封装

以下是一个封装了获取上月、本月、本季度、上季度和年度的开始和结束时间的方法:

javascript 复制代码
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,
  };
}

// 调用函数获取日期范围
let dateRange = getDateRange();

console.log('本月的开始日期:', dateRange.startOfMonth);
console.log('本月的结束日期:', dateRange.endOfMonth);
console.log('上月的开始日期:', dateRange.startOfLastMonth);
console.log('上月的结束日期:', dateRange.endOfLastMonth);
console.log('本季度的开始日期:', dateRange.startOfQuarter);
console.log('本季度的结束日期:', dateRange.endOfQuarter);
console.log('上季度的开始日期:', dateRange.startOfLastQuarter);
console.log('上季度的结束日期:', dateRange.endOfLastQuarter);
console.log('本年度的开始日期:', dateRange.startOfYear);
console.log('本年度的结束日期:', dateRange.endOfYear);

这个封装的方法定义了一个名为 getDateRange 的函数,该函数根据当前日期获取上月、本月、本季度、上季度和年度的开始和结束时间,并返回一个包含这些时间的对象。然后,通过调用 getDateRange 函数来获取日期范围,并将结果打印输出。

这个封装方案可以方便地获取上月、本月、本季度、上季度和年度的开始和结束时间,可以根据需要将其集成到你的项目中。

使用场景和优缺点

上月、本月、本季度、上季度和年度的开始和结束时间可以在各种场景下使用,特别是与时间相关的数据分析、报表生成和业务逻辑计算等方面。以下是一些常见的使用场景:

  1. 数据分析和报表生成:在数据分析和报表生成过程中,经常需要按照时间范围进行数据筛选和计算。使用上月、本月、本季度、上季度和年度的开始和结束时间可以方便地获取对应的时间范围,从而准确地提取和计算相应的数据。

  2. 业务逻辑计算:在一些业务逻辑计算中,需要根据时间范围进行特定的计算和判断。例如,统计上月销售额、计算本季度的利润等。使用上月、本月、本季度、上季度和年度的开始和结束时间可以方便地获取相应的时间范围,从而进行业务逻辑计算。

  3. 时间过滤和查询:在数据库查询和数据筛选中,经常需要根据时间范围进行数据过滤和查询。使用上月、本月、本季度、上季度和年度的开始和结束时间可以方便地构建查询条件,从而获取符合时间范围要求的数据。

优点:

  • 方便:使用上月、本月、本季度、上季度和年度的开始和结束时间,可以方便地获取相应的时间范围,避免手动计算和输入时间范围的麻烦。
  • 精确:根据当前日期动态计算时间范围,确保获取的时间范围准确无误。
  • 可复用:封装成方法后,可以在不同的场景中反复使用,提高代码的复用性和效率。

缺点:

  • 依赖于系统时间:获取的时间范围依赖于系统时间,如果系统时间不准确或被修改,可能会导致获取的时间范围不准确。
  • 逻辑复杂性:计算上月、本月、本季度、上季度和年度的开始和结束时间涉及一定的逻辑复杂性,需要考虑月份和季度的边界情况,可能需要处理一些特殊情况的逻辑。

综上所述,上月、本月、本季度、上季度和年度的开始和结束时间在数据分析、报表生成和业务逻辑计算等场景中非常有用,可以方便地获取对应的时间范围。但需要注意系统时间的准确性和处理逻辑复杂性。

相关推荐
崔庆才丨静觅15 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606116 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了16 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅16 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅17 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅17 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment17 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅17 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊17 小时前
jwt介绍
前端
爱敲代码的小鱼17 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax