首页 > 其他分享 >js封装获取当前周数据

js封装获取当前周数据

时间:2023-10-12 18:55:54浏览次数:50  
标签:封装 range Date 获取 日期 date new baselineDate js

 

/*
 * @Author: 张大碗 [email protected]
 * @Date: 2023-09-20 17:36:15
 * @LastEditors: 张大碗 [email protected]
 * @LastEditTime: 2023-10-08 11:04:08
 * @FilePath: \vue-vant2-template-master\vue-vant2-template-master\src\utils\week.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// 根据参数日期获取具体日期信息
export const formatDate = function (date = new Date()) {
  let year = date.getFullYear()
  let month = date.getMonth() + 1
  let day = date.getDate()
  let week = ['日', '一', '二', '三', '四', '五', '六'][date.getDay()]

  const dateInfo = {
    date: new Date(date),
    dateStr: `${year}-${month.toString().padStart(2, '0')}-${day
      .toString()
      .padStart(2, '0')}`,
    dateStr1: `${month.toString().padStart(2, '0')}-${day
      .toString()
      .padStart(2, '0')}`,
    year,
    month,
    day,
    week,
    isToday: false,
  }

  const today = new Date()
  // 判断是否为当天
  if (
    today.getFullYear() === year &&
    today.getMonth() + 1 === month &&
    today.getDate() === day
  ) {
    dateInfo['isToday'] = true
  }
  return dateInfo
}

// 根据基准日期,获取长度为dayLenth的日期数组
export const setDate = function (date = new Date(), step = 7) {
  let weekData = []
  const week = date.getDay() > 0 ? date.getDay() - 1 : 0
  date = getDateByDate(date, week * -1)
  if (date.getDay() > 0) {
    for (let i = 0; i < step; i++) {
      weekData.push(formatDate(i == 0 ? date : getDateByDate(date, 1)))
    }
  } else {
    for (let i = 0; i < step; i++) {
      weekData.push(formatDate(getDateByDate(date, 1)))
    }
  }
  return weekData
}

// 根据基准日期获取前后某天的日期对象
export const getDateByDate = function (date = new Date(), range = 0) {
  date.setDate(date.getDate() + range)
  return date
}

/* 
    获取以baselineDate所在周的一周、前一周、下一周的日期和星期信息(切换周期也可通过参数dayLenth自行设置)
    baselineDate: 设置的基准日期(返回的日期列表的第一个日期)
    range: 以 baselineDate 为基准日期的前后天数范围(如基准日期的range为0,需要返回前7天日期,则range为-7,后7天则range为7)
    step: 需要获取的日期信息周期天数,默认获取baselineDate所在周的一周日期信息
    new Date().getDay() > 0 ? 0 : -7,  当周日时有bug 显示默认前7天,不然显示后7天
   */
export const getWeekDate = ({
  baselineDate = new Date(),
  range = new Date().getDay() > 0 ? 0 : -7,
  step = 7,
}) => {
  return setDate(getDateByDate(baselineDate, range), step)
}
// read me
//       // 获取当天所在星期数据
//       getWeekDate({ baselineDate: new Date() })

//       // 获取以当天为基准日期的上星期数据
//       getWeekDate({
//         baselineDate: new Date(),
//         range: -7,
//       })

//       // 获取以当天为基准日期的下星期数据
//       getWeekDate({
//         baselineDate: new Date(),
//         range: 7,
//       })
//       // 获取当天日期信息
// formatDate(getDateByDate());

 

标签:封装,range,Date,获取,日期,date,new,baselineDate,js
From: https://www.cnblogs.com/web-jscss-dabao/p/17760301.html

相关文章

  • golang map json 结构体
    要将JSON转换为Go结构体,您可以使用json.Unmarshal()函数。首先,您需要定义一个与JSON数据结构匹配的Go结构体,然后使用json.Unmarshal()将JSON数据解码为该结构体。以下是一个示例:假设有如下JSON数据:{"name":"JohnDoe","age":30,"email":"[email protected]"}......
  • SpringBoot获取Bean的工具类
    1、beanName默认是类名首字母小写下面的类:beanName=bean1@ComponentpublicclassBean1{publicStringgetBean1(){return"Bean1";}}修改beanName下面的类:beanName=bean2New@Component("bean2New")publicclassBean2{......
  • 内网环境中获取域控权限的常见方法
    内网协议NTLM-CVE-2019-1040利用1-exchange​通过printerbug使exchange机器向攻击机发送认证回连攻击者的机器,再使用ntlmrelayx--remove-mic参数绕过NTLMMIC校验,将smb中继到LDAP进行身份认证。​打印机的spoolsv.exe服务允许用户远程调用,当用户向RemoteFindFirstPrinterChan......
  • [node]安装node后,可以在控制台进行简单的js文件测试
    1.在Windows操作系统安装好node之后,可以在任意文件地址,按下shift+鼠标右键,打开WindowsPowerShell。  或者在VSCode中,右键选择某文件夹,选择“在集成终端中打开”。2.输入node,可以查看安装好的node版本。3.按下ctrl+d,退出node。 在js文件所在目录打开终......
  • JS 堆栈跟踪
    堆栈跟踪APIV8中抛出的所有内部错误在创建时都会捕获堆栈跟踪。可以通过非标准error.stack属性从JavaScript访问此堆栈跟踪。V8还具有各种钩子,用于控制堆栈跟踪的收集和格式化方式,以及允许自定义错误也收集堆栈跟踪。本文档概述了V8的JavaScript堆栈跟踪API。functio......
  • 数据库解决获取一个字段parent中某个字符串child第一次和第二次出现的位置之间的内容c
    下面就postgresql数据和oracle数据库分别提供两种解决方法--postgresql数据库解决获取一个字段parent中某个字符串child第一次和第二次出现的位置之间的内容cut--方法一selectcasewhenposition(childinparent)>0thensubstring(parent,position(childinparent)+l......
  • 获取打印机时候报错 RPC 服务不可用
    检查以下几个服务状态是否正常PrintSpoolerRemoteProcedureCall(RPC)RemoteProcedureCall(RPC)LocatorDCOMServerProcessLauncher......
  • 原生js面试题(二)
    一、携带token->token的无感刷新  (token如何携带?->token的无感刷新?)目的:是为了解决管理系统接口数据的安全性考虑时间就是1-7天token时间一过就要重新登录.需要在后台定时刷新token并且替换之前老的失效的token-1 后端返回过期时间,前端每次请求就判断tok......
  • 明细表,根据开始日期的值,+1年赋值给结束日期JS
    <script>jQuery(document).ready(function(){varyxqqsrq=WfForm.convertFieldNameToId("yxqqsrq","detail_1");varyxjzrq=WfForm.convertFieldNameToId("yxjzrq","detail_1");//字段值改变事件......
  • getMonth():获取当前月(注意:返回数值为0~11,需要自己+1来显示),0代表一月份,如果要显示2位
    getMonth():获取当前月(注意:返回数值为0~11,需要自己+1来显示),0代表一月份,JavaScriptDate对象 日期选择控件的主要功能是向用户提供包含年、月、日的日期数据并并允许用户对其修改。如果要捕获用户修改日期选择控件的数据事件响应,需要为DataPicker添加一个OnDateChangedListene......