dayjs函数简单封装

从datefns换到dayjs // 有关 date-fns很好,真的开箱即用,封装的也很好使。但是时区上没那么友好,不能全局设置时区,后面换成dayjs注意,封装好了之后,后面都是从这个文件使用的dayjs,类型从Date直接换到dayjsType(注意这里得export type而不是export const)这样用的都是unix并且tz之后的day,带有固定的上海时区。 阅读详情

写在前面:

2018-10-16 17:51:39
非vue也是用dayjs()时使用方法

<script src="https://unpkg.com/dayjs"></script>

由于vue的时间戳获取的是当前时间的,而筛选条件(非el-input)开始时间一般是需要加上当前条件加上00:00:00,结束时间也需要加上23:59:59;因此结合dayjs简单封装下目标函数
Update 2018-10-10 18:20:44
增加dateNum小于0的设置

    // 设置时间戳格式V2.0
    // 适用范围本日,最近一月,最近三月,最近半年,最近一年
    // 调用示例:this.getTimestampType(6,'month','start','before')距现在半年之前的时间戳
    getTimestampType(datenum, dateType, handleType,add){
      // @dateNum     Number 天数或月数或年数
      // @dateType    String ['year','month','day']
      // @handleType  String ['start','end'],start 00:00:00;end 23:59:59
      // @add         String ['before','after'],before:往前,after:往后

      // 字段拦截
      let dateTypeArr =['year','month','day']
      let dateTypeStt = dateTypeArr.includes(dateType)
      if(!dateTypeStt){console.error('dateType: Type is error');return;}
      let handleTypeArr =['start','end']
      let handleTypeArrStt = handleTypeArr.includes(handleType)
      if(!handleTypeArrStt){console.error('handleType: Type is error');return;}
      let addArr =['before','after']
      let addArrStt = addArr.includes(add)
      if(!addArrStt){console.error('add: Type is error');return;}
      let dateNum = parseInt(datenum);
      if(dateNum<0){
        // 如果dateNum小于0,则往前的变为往后,反之亦然
        if(add == 'after'){add = 'before'}
        if(add == 'before'){add = 'after'}
      }

      if(dateNum==0){
          // 如果datenum为0,就是当前条件下的开始或结束(当年第一天或当月第一天或当前天)
          if(handleType === 'start'){
            return dayjs().startOf(dateType).valueOf()
          }else if(handleType == 'end'){
            return dayjs().endOf(dateType).valueOf()
          }
        }else{
          if(add === 'after'){
            // 计算往后的
            // 大于0时,返回的是符合条件的值
            if(handleType === 'start'){
              return dayjs().add(Math.abs(dateNum),dateType).startOf('date').valueOf()
            }else if(handleType == 'end'){
              return dayjs().add(Math.abs(dateNum),dateType).endOf('date').valueOf()
            }
          }else if(add === 'before'){
            // 计算往前的
            if(handleType === 'start'){
              return dayjs().subtract(Math.abs(dateNum),dateType).startOf('date').valueOf()
            }else if(handleType == 'end'){
              return dayjs().subtract(Math.abs(dateNum),dateType).endOf('date').valueOf()
            }
          }
        }
    },
    // 设置时间格式V1.0
    getTimestampType(datenum, dateType, handleType,add){
      // @dateNum     Number 天数或月数或年数 取值大于0,且为整数
      // @dateType    String 只能是'year,month,date'
      // @handleType  String 是开始还是结束,开始为00:00:00;结束为23:59:59
      // @add         String before为往前的,after

      // 字段拦截
      let dateTypeArr =['year','month','day']
      let dateTypeStt = dateTypeArr.includes(dateType)
      if(!dateTypeStt){console.error('dateType: Type is error');return;}
      let handleTypeArr =['start','end']
      let handleTypeArrStt = handleTypeArr.includes(handleType)
      if(!handleTypeArrStt){console.error('handleType: Type is error');return;}
      let addArr =['before','after']
      let addArrStt = addArr.includes(add)
      if(!addArrStt){console.error('add: Type is error');return;}
      let dateNum = parseInt(datenum);

      if(dateNum==0){
          // 如果datenum为0,就是当前条件下的开始或结束(当年第一天或当月第一天或当前天)
          if(handleType === 'start'){
            return dayjs().startOf(dateType).valueOf()
          }else if(handleType == 'end'){
            return dayjs().endOf(dateType).valueOf()
          }
        }else if(dateNum>0){
          if(add === 'after'){
            // 计算往后的
            if(dateNum>0){
              // 大于0时,返回的是符合条件的值
              if(handleType === 'start'){
                return dayjs().add(dateNum,dateType).startOf('date').valueOf()
              }else if(handleType == 'end'){
                return dayjs().add(dateNum,dateType).endOf('date').valueOf()
              }
            }
          }else if(add === 'before'){
            // 计算往前的
            if(dateNum>0){
              if(handleType === 'start'){
                return dayjs().subtract(dateNum,dateType).startOf('date').valueOf()
              }else if(handleType == 'end'){
                return dayjs().subtract(dateNum,dateType).endOf('date').valueOf()
              }
            }
          }
        }else{
          console.error('dateNum: Type is error')
        }
    }
ANSYS命令流黑箱揭秘:流体渗透压力载荷的七种收敛优化策略 本文深入解析ANSYS Workbench中流体渗透压力载荷的七种收敛优化策略,重点探讨接触探测点迭代逻辑、PPCN阈值动态调整及FPAT参数优化等关键技术。通过命令流示例和实战技巧,帮助工程师有效解决流体与结构相互作用仿真中的收敛难题,提升计算效率和精度。 阅读详情

相关推荐

ZedBoard+Vivado(二)——PS + PL实现流水灯

硬件:Zedboard 软件:Vivado2018.2 + Win10 本文参考了http://blog.chinaaet.com/cuter521/p/35978的设计 1 设计 功能:PS + PL流水灯 语言:C 流程:创建工程-&amp;gt;IP Integrator-&amp;gt;综合、实现、生成Bitstream-&amp;gt;SDK 2 流程 2.1 创建工程 跟上一篇步骤完全相同,这里不用添加源文...

q416524389的博客 3697

js中Date常用方法封装

js Date基础 Date封装 Date常用方法

MadSnail00的博客 498

深入理解光流法外推雷达回波

背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设

weixin_44695861的博客 6035

Vue3使用dayjs以及dayjs日期工具类

记录在Vue3里面全局使用dayjs,以及将它封装为自己需要的日期工具类。

weixin_48040732的博客 4857

焊缝缺陷智能检测:基于 YOLO 的工业质检系统实战

从焊缝缺陷数据集的构建到模型训练,从桌面检测界面到缺陷统计输出,本文覆盖了一套工业焊缝质检系统的完整路线。这个场景的核心难点在数据层面——气孔和裂纹这类小目标的标注质量直接决定了模型的最终表现。建议先在开源数据集上跑通全链路,确认 mAP 达到可接受的水平后,再通过补充特定类型的小目标数据和提升输入分辨率来做精度优化。工业场景中,漏检一个气孔的成本和误报一个假阳性的成本不一样——根据对两类成本的承受力,调整置信度阈值来找到业务上的最佳平衡点。

m0_71589036的博客 202

YOLOv11改进 - C3k2融合 | C3k2 融合 ARConv 自适应矩形卷积:动态调整卷积核形状与采样点

本文介绍了将自适应矩形卷积(ARConv)模块与YOLOv11相结合的方法。ARConv是针对遥感图像全色锐化任务设计的创新卷积模块,可自适应调整卷积核形状与采样点数量,解决传统卷积刚性限制,实现高效特征提取。其工作流程包括学习卷积核高度和宽度、选择采样点数量、生成采样图、卷积实现与空间自适应增强。我们将集成ARConv的C3k2_ARConv模块引入YOLOv11,对相关代码进行修改和注册,并配置了yolov11 - C3k2_ARConv.yaml文件。实验脚本显示,该结合方式应用于目标检测任务。

魔改工程师的博客 1006

dayjs一些常用封装

dayjs常用封装

weixin_47346395的博客 3129

基于YOLOv26的卫星遥感环境监测系统

本文介绍了一个基于YOLOv26的卫星遥感环境监测系统。该系统采用分层架构设计,包含数据采集、预处理、目标检测、图像分析、变化检测等核心模块。技术栈包括YOLOv26、PyTorch、OpenCV等深度学习框架和图像处理工具,以及GDAL、rasterio等地理信息处理库。系统支持获取多种卫星数据源(如Sentinel、Landsat、MODIS)的遥感图像,并进行时间序列分析。通过代码示例展示了数据采集模块的实现,包括卫星图像获取和模拟生成功能。该系统可应用于环境要素检测、变化监测等场景,为环境监测提供智

一键难忘的博客 935

js封装获取昨天、今天和明天的日期的方法

js封装获取昨天、今天和明天的日期的方法

m0_65638748的博客 855

在 SAP SD(销售与分销)模块中,销售合同 / 订单的抬头(Header) 和行项目(Item) 核心数据表如下,按 “核心表 + 扩展表” 分类说明,同时区分销售合同(Contract,类型 W

SAP SD模块中销售合同/订单的核心数据表分为抬头和行项目两类。核心抬头表包括VBAK(基础数据)和VBUK(状态数据),核心行项目表包括VBAP(基础数据)和VBUP(状态数据)。扩展表包含VBAKE(抬头增强)、VBAPe(行项增强)、VBEP(计划行)、VBFA(凭证流)等。销售合同(WK/WC)和订单(OR)通过VBAK-AUART字段区分,核心表结构相同。查询时需注意单据类型筛选,并通过VBELN主键关联抬头和行项数据,KNUMV关联定价条件,VBFA表追踪凭证流。

金牌架构师 1091

学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了使用Simulink实现四开关Buck-Boost(FSBB)变换器无缝模式切换的仿真方法。FSBB变换器因其输入输出同极性、单电感和双向能量流特性,广泛应用于光伏储能、USB-PD和车载电源等场景。文章重点解决了模式切换中的直通风险和占空比跳变问题,通过统一电压PI控制、Stateflow模式仲裁和200ns死区设计,实现了Buck(26V→24V)、Pass-Through(24V±1V)和Boost(22V)三种工作模式的无缝过渡。仿真结果显示输出电压稳定在12V±0.15V,切换过程无

amy_mhd的博客 67

vue3使用dayjs以及dayjs日期工具类

Vue3使用dayjs全局使用以及将dayjs封装为自己需要的日期工具类。

weixin_45128657的博客 4190

大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)

目录 Linux 系统调用的过程,中间发生了什么? 表格总结 Linux 中断流程,谈谈你对中断上下文的理解 中断流程 中断上下文理解 Linuxschedule()函数的原理和调用的时机 schedule()函数原理 调用时机 页表实现机制,分页的缺点? 页表机制 分页的缺点 介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice命令) 多级反馈队列调度 时间片轮转 使用nice命令 聊内存分配,进程内存分配,段页式存

大模型大数据攻城狮的专栏 4172

JS日期格式化——数字日期转中文日期(封装函数,dayjs时间格式化YYYY-MM-DD)

在团队或者企业的后台管理系统中,各类办公文件也会涉及到日期的处理——数字日期(2022-12-22)→ 中文格式(二〇二二年十二月二十二日)。以及时间格式化YYYYMMDD

XSL_HR的博客 4032

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【HarmonyOS】时间处理Dayjs

在项目中经常会使用要时间的格式转换,比如数据库返回一个Date数据,你需要转成2024-10-2的格式,鸿蒙的原生SDK中是没有办法实现的,因此,在这里介绍第三方封装好并且成熟使用的库Dayjs。上面三种提供时间查询的方法可以将时间单位作为第二个参数传入,可以实现除毫秒以外的单位进行比较。使用subtract方法,传入数值和时间单位,可以实现时间的减少,再通过todate方法来实现date的更新。使用add方法,传入数值和时间单位,可以实现时间的增加。可以在使用占位符加自定义的字眼来实现自己要的特定效果。

2023年最新地推相关信息 3786

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

nuxt3项目使用dayjs

nuxt3项目使用dayjs日期方法,并将日期显示为几分钟、几小时,几天前等形式。

Warminlove的博客 1678

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JS日期与字符串相互转换(时间格式化YYYY-MM-DD,Dayjs的使用)

本期文章主要介绍JS日期与字符串相互转换,涉及两个方法——传统的JS手写函数,使用Dayjs将日期转化为YYYY-MM-DD格式

XSL_HR的博客 1万+

前端开发【工具函数】基于dayjs 封装的DateUtils工具函数,可以直接拿着使用

本文整理了基于dayjs的JavaScript日期处理工具函数,覆盖5大核心场景:1)日期格式化(支持自定义格式、快捷格式和相对时间);2)日期差值计算(支持多种单位、年龄计算和时长格式化);3)日期范围获取(当天、近N天、当月、上月范围);4)特殊日期判断(今天、昨天、周末);5)时区与时间戳转换。这些函数可直接复用,满足前端开发中90%的日期处理需求,代码简洁高效且支持中文本地化。

向着太阳迎着光 578

vue dayjs处理时间格式

安装 dayjs 依赖包 npm install dayjs --save util.js 公共方法文件中引入dayjs import dayJs from 'dayjs'; import 'dayjs/locale/zh-cn'; dayJs.locale('zh-cn'); 封装方法 const formatDate = (date, format) => { if (date) { return dayJs(date).format(format); } r.

xfWgaoqiang的博客 1662
上一篇: vue:element-ui时间选择器限制只能点不能输入
下一篇: jquery版:点击图片旋转
AlexKain
博客等级 码龄8年 35粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值