前端常见的时间转换方法合集+动态时钟效果实现

12 篇文章 0 订阅

1.将时间戳转换为'YYYY-MM-DD HH:mm:ss'格式-老方法

通过对应的年月日时分秒依次进行拼接,另外还需要对小于10的值进行处理,在前面添加字符串‘0’,转换为常见的两位数时间格式

function transformTime(timestamp = +new Date()) {
    if (timestamp) {
        var time = new Date(timestamp);
        var y = time.getFullYear();
        var M = time.getMonth() + 1;
        var d = time.getDate();
        var h = time.getHours();
        var m = time.getMinutes();
        var s = time.getSeconds();
        return y + '-' + addZero(M) + '-' + addZero(d) + ' ' + addZero(h) + ':' + addZero(m) + ':' + addZero(s);
      } else {
          return '';
      }
}
function addZero(m) {
    return m < 10 ? '0' + m : m;
}
transformTime(); // "2023-01-25 15:25:28"

老方法优化思路:

new Date().toJSON获取的是格林威治时间的JSON字符串,例如:'2023-01-25T15:39:11.803Z'

转化为北京时间需要额外增加八个时区,也就是在当前时间戳的基础上增加8个小时

我们需要的是字符串前19位,再把‘T’替换为空格,就是我们需要的时间格式

function time(time = +new Date()) {

  var date = new Date(time + 8 * 3600 * 1000) // 增加8小时

  return date

    .toJSON()

    .substr(0, 19)

    .replace('T', '  ')

}

time() // '2023-01-25 15:39:11'

2.vue中时间转换插件:moment.js

(1)下载安装包

npm install moment --save

(2)在main.js中引入

import moment from 'moment'
Vue.prototype.$moment = moment

(3)使用

moment('需要转换的时间').format('目标转换格式'); 

this.$moment('需要转换的时间').format('YYYY-MM-DD') 

更多时间转换格式,详细可见官网:Moment.js 中文网

 3.vue 动态显示实时时间/时间格式化插件:dayjs

(1)下载安装包

npm install dayjs --save

(2)在main.js中引入,全局使用

import dayjs from "dayjs"

Vue.prototype.dayjs = dayjs; 

(3)具体使用

this.dayjs().format('YYYY-MM-DD')  // 当前日期:年月日

this.dayjs().format("YYYY-MM-DD HH:mm:ss")  // 当前日期:年月日 时分秒

/* 获取过去七天时间 */

 for (let i = 6; i >= 0; i--) {

   let date = this.dayjs(this.dayjs()-24*60*60*1000*i).format("YYYY-MM-DD")

   console.log(date)

 }

 dayjs实现钟表效果-实时显示时间

<template>

  <div id="app">

    {{this.datetime}}

  </div>

</template>

<script>

  export default {

    name: "app",

    data() {

      return {

        timer: '',

        datetime: ''

      }

    },

    mounted() {

      /* 每秒定时刷新 */

      this.timer = setInterval(() => {

        this.datetime = this.dayjs().format("YYYY-MM-DD HH:mm:ss")

        console.log(this.datetime)

      }, 1000)

    },

    beforeDestroy() {

      /* 离开页面前销毁定时器 */

      if(this.timer){

        clearInterval(this.timer);

      }

    }

  };

</script>

 

4.将Excel日期时间上传后转成标准时间 

function formatExcelDate(numb, format = '/') {
  const time = new Date((numb - 25567) * 24 * 3600000 - 5 * 60 * 1000 - 43 * 1000 - 24 * 3600000 - 8 * 3600000)
  time.setYear(time.getFullYear())
  const year = time.getFullYear() + ''
  const month = time.getMonth() + 1 + ''
  const date = time.getDate() + ''
  if (format && format.length === 1) {
    return year + format + month + format + date
  }
  return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
项目介绍 该系统是一款专门为老年人设计的多功能监护设备,主要由屏幕显示、CPU主控器、GSM、PM2.5传感器、ADXL345加速度模块、MP3、脉搏检测电路和时钟芯片部分组成。加速度模块测得老人加速度的变化,通过算法判断老人是否摔倒并通过GSM模块发短信通知监护人。MP3模块可以进行音乐的切换和音量的调整,为老人提供娱乐。通过PM2.5模块检测出空气中PM2.5浓度,脉搏检测电路检测出老年人的脉搏,时钟芯片电路计算出时间和日期,然后统一在2.2寸的TFT液晶彩屏上显示出来。以上所有电路和模块都是通过STC12C5A60S2单片机组成的CPU模块的控制和计算,具有很大的实用性。 主要功能 1)摔倒检测功能,能够检测到老人意外摔倒,并通过发信息告知监护人; 2)脉搏检测功能,可以检测老人的脉搏,并通过屏幕显示出来; 3)GSM发短信功能,老人跌倒时,通过此装置发短信给监护人; 4)PM2.5检测功能,检测老人周围环境的空气质量,空气差时提醒老人; 5)MP3音乐功能,老人感到无聊的时候可以用来听乐曲; 6)液晶屏显示功能,能够显示当前时间日期、老人脉搏以及环境空气质量; 7)充当电话功能,可以但电话给固定用户。 系统框图 该系统主要有彩色液晶显示、脉搏检测电路、GSM发信息、PM2.5测量、摔倒检测、MP3电路、按键电路和时钟电路等模块。采用光电式红外对管采集脉搏信号,GSM模块采用的是SIM900A芯片集成的模块,测量PM2.5浓度用的是夏普二代粉尘传感器GP2Y1050AU0F,用ADXL345加速度传感器采集加速度来判断是否摔倒,采用DS1302时钟芯片进行计时。脉搏次数、PM2.5浓度以及时间均在液晶显示屏显示出来,可以按键播放音乐和切换音乐,摔倒报警经过GSM模块发信息出去。 脉搏检测部分 主要有前端脉搏采集电路、一级放大电路、电压比较电路。红外对管采集脉搏信号,脉搏每跳动一下,人手指组织的半透明度数值会发生相应的变化,红外发射管能透过手指的光线强弱也跟着变化。当透过手指的光线比较强时,红外接收管输出低电平;当透过手指的光线比较弱时,红外接收管输出高电平。而且,红外接收管输出端输出的信号的频率和心跳的频率一样,是一种类似于正弦波的波形。 当脉搏每分钟达四十次时,检测到的信号的频率大约为0.78Hz,当脉搏每分钟达一百二十次时,检测到的频率是3.33Hz,此信号是低频信号。初级采集的信号先通过滤波器滤掉高频,再进入放大电路放大。放大器的功能是将输入信号放大一百倍,而且与其他电路接在一起将信号再次进行滤波。接下来通过整形电路整形成方波,再输出到单片机的中断输如端进行检测、计算等进一步处理。 摔倒检测部分 本设计中ADXL345与单片机之间是通过IO口模拟I2C来进行通信,所以只需要两根线进行连接。单片机通过不停地检测该模块,检测老年人加速度的变化,再结合一些跌倒算法,判断老人是否跌倒。 ADXL345能够检测出三个方向的加速度变化量,能够检测的加速度范围很高,分辨率也能达到很高。通过检测到加速度,还能根据公式算出角度变化量,所以也可以当作角度传感器来使用。它还能检测一些振荡动作以及检测摔倒,并且该传感器还带有中断输出引脚,使用非常方便。ADXL345的灵敏度很高,所以可以应用到一些比较精密的设备上。ADXL345与单片机之间可以通过I2C或者SPI通信,程序简单便捷,上手快,使用简单并且速度快,很具有实用价值。并且ADXL345的功耗非常低,节能省电。 程序流程图 系统操作说明 1)开启电源,看到GSM模块信号灯闪烁,直到信号灯按照亮100ms灭750ms的频率闪烁时表示GSM模块已接入网络; 2)给MP3模块插上一张存有音乐的TF卡,按“播放键”播放音乐,按“左键”和“右键”切换音乐; 3)按“时间键”进入时间修改状态,然后按“上键”,“下键”,“左键”,“右键”修改时间,修改完毕时再按“改时间键退出修改时间界面; 4)按下“脉搏测量键”,脉搏测量指示灯亮,把手指放到红外对管之间,脉搏测量开始,直到听到一声响声,表示脉搏测量完毕,脉搏次数在屏幕上有显示; 5)按下“摔倒检测键”,摔倒检测指示灯亮,摔倒检测功能开启,再按一下,指示灯灭,摔倒检测功能关闭; 6)在主界面,按“上键”拨打电话给固定的电话号码,按“下键”结束通话。 系统总结 整形电路中已把脉搏信号转换成方波信号,用示波器来检测这个方波信号作为对比。以上脉搏测量的数据是在手指没有剧烈抖动、没有其他强烈光源影响的前提下测的。从表格的数据可以看出所测数据基本和示波器所测的数据基本一样,有且只是相差1次左右。虽然没有专业的脉搏测量仪作比较,但在设计中最后脉搏信号输出的地方加了一个LED灯电路,随着脉搏的跳动,LED灯也跟着闪烁,闪烁频率和脉搏跳动一致。所以,排除其他强烈
1. 设计任务与要求 设计并制作一套模拟路灯控制系统。控制系统结构如图1所示,路灯布置如图2所示。 图1 路灯控制系统示意图 图2 路灯布置示意图(单位:cm) 基本要求 (1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和 关灯。 (2)支路控制器应能根据交通情况自动调节亮灯状态:当可移动物体M(在物体前端 标出定位点,由定位点确定物体位置)由左至右到达S点时(见图2),灯1亮; 当物体M到达B点时,灯1灭,灯2亮;若物体M由右至左移动时,则亮灯次序与上 相反。 (3)支路控制器能分别独立控制每只路灯的开灯和关灯时间。 发挥部分 (1)支路控制器应能根据环境明暗变化,自动开灯和关灯。 (2)当路灯出现故障时(灯不亮),支路控制器应发出声光报警信号,并显示有故障路 灯的地址编号。 2. 方案比较与论证 1. 物体检测方案选择 方案一: 物体的位置检测采用压力传感器,当物体通过定位点时,通过检测压力传感器的输出信 号,检测是否有物理通过。其输出信号的调理电路相对简单,但是采用压力传感器价格 较贵,且物体的重量是不定的,所以信号的大小也不定,这样就增加了软件程序处理的 难度。 方案二: 使用发光二极管和光敏二极管。此方案缺点在于环境的其他光源对光敏二极管的工作产 生很大的干扰,一旦外界光强改变,很可能造成误判和漏判,即使采用超高亮发光管可 以降低一定的干扰,但这又增加额外的功耗。 方案三: 采用TCRT5000光电传感器,能准确的检测物体的定位,此方案可以降低可见光的 干扰,灵敏度高,同时其尺寸小、质量轻、价格也低廉。外围电路简单,安装起来方便 ,电源要求不高,用它作为定点检测相对合适,所以本设计采用此方案。 2、自动控制方案选择 方案一: 支路控制器和单元控制器之间采用无线通信实现控制。此方案可以简化布线,减轻线路 维护的压力,但是它的问题在于无线通信价格比较昂贵,实现代价较大,输出易受外界 电磁场的干扰,并且需要大量繁琐的通信测试才能确保正常工作。 方案二: 采用总线控制来进行单片机通信,从而实现支路控制器对各个单元控制器的控制。此方 案要求每有一个路灯就增加一个单片机,所需要的单片机较多,编程负担很大,程序可 靠性低。 方案三: 直接用单片机的IO口进行控制,可以有效的实现支路控制器对各个单元控制器的控制。 并且线路简单,程序简洁,系统比较稳定可靠性高。此方案价格也比较合理,非常适合 用于实验室模拟路灯控制系统,所以本实验采用此方案实现自动控制。 3、处理器的选择 在处理器方面我们选用了经典51系列的单片机中89C52单片机,它的程序存储器容量 较大,并且比89C51多了一个定时器2,更有利于系统功能的实现。 3. 系统硬件设计 3.1系统的总体设计 单元控制器检测道路交通情况,环境明暗度和路灯工作情况并将结果反馈给支路 控制器,触发支路控制器进行处理并将处理后的结果送到各个单元电路,实现时钟定时 ,自动开关灯,故障报警等功能。 3.2单元电路设计 3.2.1稳压电源模块 采用稳压芯片将交流电压转换为直流5v电源,给整个路灯控制系统供电,原理图 如下: 图3.2.1 3.2.2物体检测模块 采用光电门和放大电路实现,电路图如下: 图3.2.2 当有物体通过光电门的到时候,光电门的接收端接收到物体反射的红外光,使得光敏 三极管导通,然后将此信号通过比较器成为一个触发电平反馈到单片机。 3.2.3故障报警模块 设灯工作的额定电压为X,那么我们可以认为当灯亮灯的电压V满足Z<V<Y时(Y,Z为两 个合适的数且满足Z<X<Y),灯正常工作,当V<Z或V>Y时,灯即出现故障。我们用灯两端 的电压v通过lm339与两个设定好的电压值进行比较并将输出的两值通过一个与非门输出 给单片机的I/O口。这样,当灯正常工作时,与非门最终输出高电平,一旦灯出故障,与 非门输出低电平,给I/O口一个下降沿触发,使单片机控制蜂鸣器及数码管发出警报。电 路图如下: 图3.2.3 图3.2.4 3.2.4单片机控制模块 此模块集成了单片机最小系统,液晶控制和显示,数码管和按键,用来实现路灯系统的 控制功能,具体原理图如上: 4. 系统软件设计 4.1程序总体流程图 液晶显示的菜单设计如下: 定时器和中断设计如下: 5. 系统的组装 系统的面板图及组装结构如下: 6. 系统调试 6. 系统调试 6.1系统测试方案 如下图所示,将小车从左侧释放,分别通过1,2,3这三个光电门,当车通过1时,灯A亮 ,当车通过2时,灯A灭,灯B亮,当车通过3时,灯B灭 6.2测试仪器及设备 双通道数字示波器 数字万用表 ----------------------- 模拟路灯控制系统-电子制作大赛(1)全文共9页,当前为第1页。 模拟路灯控制系统-电子制作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值