vue3中基于dayjs实现日历

import dayjs from 'dayjs'
export const useCreateCander = () => {
  let calendarDay = []
  // 当前年,去年,明年
  let year = dayjs().year()
  let prvYear = year - 1
  let nextYear = year + 1
  // 当前月、上月、下月
  let month = dayjs().month() + 1
  let prvMonth = month - 1
  let nextMonth = month + 1
  // 当前月,上个月,下个月有几天
  let curentDay = dayjs(`${year}-${month}`).daysInMonth()
  let prvDay = dayjs(`${prvYear}-${prvMonth}`).daysInMonth()
  let nextDay = dayjs(`${nextYear}-${nextMonth}`).daysInMonth()
  // 判断当月的第一天是星期几
  let startDay = dayjs(`${year}-${month}-1`).day()
  // 当月的第一天是星期日时,设为7
  startDay = startDay === 0 ? 7 : startDay
  // 日历面板有6行,总共42个,需要在每个月的前后增加天数,凑够42天
  // 前面需要加的天数
  let addPrvDay = startDay - 1
  // 后面需要加的天数
  let addNextDay = 43 - curentDay - startDay

  for (let i = 0; i < curentDay; i++) {
    if ([8, 10, 12, 17, 22].includes(i)) {
      calendarDay.push({
        day: i + 1,
        type: 'current',
        color: 'rgba(255, 100, 100,0.7)',
        date: dayjs(`${year}-${month}-${i + 1}`).format('YYYY-MM-DD')
      })
    } else {
      calendarDay.push({
        day: i + 1,
        type: 'current',
        date: dayjs(`${year}-${month}-${i + 1}`).format('YYYY-MM-DD'),
        color: 'rgba(20, 255, 202,0.7)'
      })
    }
  }
  // 前面添加addPrvDay天
  for (let i = 0; i < addPrvDay; i++) {
    calendarDay.unshift({
      day: prvDay - i,
      type: 'prv',
      date: dayjs(`${year}-${prvMonth}-${prvDay - i}`).format('YYYY-MM-DD')
    })
  }
  // 后面添加addNextDay天
  for (let i = 0; i < addNextDay; i++) {
    calendarDay.push({
      day: i + 1,
      type: 'next',
      date: dayjs(`${year}-${nextMonth}-${i + 1}`).format('YYYY-MM-DD')
    })
  }
  console.log(calendarDay)
  return {
    calendarDay
  }
}

数据结构
在这里插入图片描述
日历样式
在这里插入图片描述
window日历
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/802390.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7 Web面板的文件管理器说明

在使用CentOS 7 Web Panel&#xff08;CWP7&#xff09;时&#xff0c;偶尔要求在服务器曲面上修改&#xff0c;创建&#xff0c;编辑或删除文件。 最简单&#xff0c;最直接的方式是通过利用CWP7的内置文件管理器。 本文将详细介绍如何启动它&#xff0c;使用它&#xff0c;以…

c++信号和槽机制的轻量级实现,sigslot 库介绍及使用

Qt中的信号与槽机制很好用&#xff0c;然而只在Qt环境中。在现代 C 编程中&#xff0c;对象间的通信是一个核心问题。为了解决这个问题&#xff0c;许多库提供了信号和槽&#xff08;Signals and Slots&#xff09;机制。今天推荐分享一个轻量级的实现&#xff1a;sigslot 库。…

基于LSTM及其变体的回归预测

1 所用模型 代码中用到了以下模型&#xff1a; 1. LSTM&#xff08;Long Short-Term Memory&#xff09;&#xff1a;长短时记忆网络&#xff0c;是一种特殊的RNN&#xff08;循环神经网络&#xff09;&#xff0c;能够解决传统RNN在处理长序列时出现的梯度消失或爆炸的问题。L…

MBR40150FCT-ASEMI无人机专用MBR40150FCT

编辑&#xff1a;ll MBR40150FCT-ASEMI无人机专用MBR40150FCT 型号&#xff1a;MBR40150FCT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;40A 最大循环峰值反向电压&#xff08;VRRM&a…

typeorm实体多对多关系指定表名与关联字段

表结构 user 用户表结构 course 课程表结构 user_course 用户课程表 (每个用户可以有多个课程, 每个课程可以有多个用户, 该表用以建立多对多关系) 实体 user.entity.ts Entity(user, { schema: test }) export class User {PrimaryGeneratedColumn({ type: int, name: id }…

江科大SPI教程听课笔记

原理部分我打算听江科大的课复习一下&#xff0c;代码部分工作大概率用HAL库敲了。 SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线。 硬件资源方面需要四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO (Master Input Slave…

自定义组件--密码修改对话框(拿来即用型)

前言 一个完整的系统中用户登录功能是不可或缺的&#xff0c;因此用户密码的修改对于前端开发者而言也是工作的重要一环&#xff0c;密码修改分为两种情况&#xff1a;一是用户自身想更换密码&#xff1b;另一种是忘记密码只能选择更换密码。本文自定义了一个通用且常见的组件-…

IDEA快速生成项目树形结构图

下图用的IDEA工具&#xff0c;但我觉得WebStorm 应该也可以 文章目录 进入项目根目录下&#xff0c;进入cmd输入如下指令&#xff1a; 只有文件夹 tree . > list.txt 包括文件夹和文件 tree /f . > list.txt 还可以为相关包路径加上注释

【STM32嵌入式系统设计与开发---拓展】——1_9_1上拉输入和下拉输入

在使用GPIO引脚时&#xff0c;上拉输入和下拉输入的选择取决于外部电路的特性和应用需求。以下是它们各自的应用场景&#xff1a; 1、上拉输入&#xff08;Pull-up Input&#xff09; 用途: 当默认状态需要为高电平时。 避免引脚悬空&#xff08;floating&#xff09;导致的…

Three.JS 使用RGBELoader和CubeTextureLoader 添加环境贴图

导入RGBELoader模块&#xff1a; import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js"; 使用 addRGBEMappingk(environment, background,url) {rgbeLoader new RGBELoader();rgbeLoader.loadAsync(url).then((texture) > {//贴图模式 经纬…

MongoDB教程(八):mongoDB数据备份与恢复

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言MongoDB 备…

socket功能定义和一般模型

1. socket的功能定义 socket是为了使两个应用程序间进行数据交换而存在的一种技术&#xff0c;不仅可以使同一个主机上两个应用程序间可以交换数据&#xff0c;而且可以使网络上的不同主机间上的应用程序间进行通信。 2. 图解socket的服务端/客户端模型

深度学习落地实战:基于UNet实现血管瘤超声图像分割

前言 大家好&#xff0c;我是机长 本专栏将持续收集整理市场上深度学习的相关项目&#xff0c;旨在为准备从事深度学习工作或相关科研活动的伙伴&#xff0c;储备、提升更多的实际开发经验&#xff0c;每个项目实例都可作为实际开发项目写入简历&#xff0c;且都附带完整的代…

cpp 强制转换

一、static_cast static_cast 是 C 中的一个类型转换操作符&#xff0c;用于在类的层次结构中进行安全的向上转换&#xff08;从派生类到基类&#xff09;或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换&#xff08;即从派生…

【Redis】集群

文章目录 一、集群是什么&#xff1f;二、 Redis集群分布式存储为什么redis集群的最大槽数是16384&#xff08;不太懂&#xff09;redis的集群主节点数量基本不可能超过1000个 三、 配置集群&#xff08;三主三从&#xff09;3.1 配置config文件3.2 启动六台redis3.2 通过redis…

铜管和铝管、铝管和铝管焊接操作介绍

一、部分品牌冰箱、空调采用铜铝管或铝铝管之间的连接方式&#xff0c;连接方式有以下两种&#xff1a; 1、洛克环&#xff1a;是方便简单的方式&#xff0c;但其需从德国采购&#xff0c;成本过于高昂而且采购周期长&#xff1b; 2、铜铝异种材料钎焊技术&#xff1a;国内可…

怎样在 PostgreSQL 中优化对大表的索引创建和维护的性能开销?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对大表的索引创建和维护的性能开销&#xff1f;一、理解大表和索引的概念&am…

[C++]——同步异步日志系统(7)

同步异步日志系统 一、日志器管理模块&#xff08;单例模式&#xff09;1.1 对日志器管理器进行设计1.2 实现日志器管理类的各个功能1.3. 设计一个全局的日志器建造者1.4 测试日志器管理器的接口和全局建造者类 二、宏函数和全局接口设计2.1 新建一个.h,文件,文件里面放我们写的…

小欧吃苹果-OPPO 2024届校招正式批笔试题-数据开发(C卷)

在处理这个问题前&#xff0c;先看一个经典的贪心算法题目。信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统http://ybt.ssoier.cn:8088/problem_show.php?pid1320 注意移动纸牌的贪心策略并不是题目中给出的移动次序&#xff1a;第1堆纸牌9<10&#xff0c;因为是…

几何相关计算

目录 一、 判断两个矩形是否相交 二、判断两条线段是否相交 三、判断点是否在多边形内 四、垂足计算 五、贝塞尔曲线 六、坐标系 一、 判断两个矩形是否相交 当矩形1的最大值比矩形2的最小值都小&#xff0c;那矩形1和矩形2一定不相交&#xff0c;其他同理。 struct Po…