Moment.js的常用函数、借助vue和Moment.js实现一个简单的时钟

news/2024/4/30 1:01:06/文章来源:https://blog.csdn.net/weixin_41897680/article/details/126914955

前言

项目中关于时间的处理是挺常见的,虽然之前就知道有Moment.js这个库,但是一直没有接触过。只不过最近同事在项目中使用了,那也只能简单学习一下,不然遇到了完全看不懂。

本文只介绍一下常用的函数,其他内容可以在 http://momentjs.cn/ 这里找到

常用函数

安装、导入

npm install momentimport * as moment from 'moment';

moment

moment();  //获取当前时间,Sun Sep 18 2022 11:00:01 GMT+0800
moment('1995-12-25'); //将字符串转为时间对象,Mon Dec 25 1995 00:00:00 GMT+0800

millisecond

moment().millisecond();  //获取毫秒
moment().millisecond(number); //设置毫秒,接受 0 到 999 之间的数字。 如果超出范围,则它将会冒泡到秒钟。

second

moment().second();  //获取秒
moment().second(number);  //设置秒,接受 0 到 59 之间的数字。 如果超出范围,则它将会冒泡到分钟

minute

moment().minute(); //获取分钟
moment().minute(number);  //设置分钟,接受 0 到 59 之间的数字。 如果超出范围,则它将会冒泡到小时。

hour

moment().hour();  //获取小时
moment().hour(); //设置小时,接受 0 到 23 之间的数字。 如果超出范围,则它将会冒泡到日期。

date

moment().date();   //获取日期
moment().date(number);  //设置日期,接受 1 到 31 之间的数字。 如果超出范围,则它将会冒泡达到月份。 

day

moment().day(); // 获取星期,其中星期日为 0、星期六为 6。
moment().day(number);  //设置星期,如果超出范围,则它将会冒泡到其他星期。
moment().day(-7); // 上个星期日 (0 - 7)
moment().day(0); // 这个星期日 (0)
moment().day(7); // 下个星期日 (0 + 7)

dayOfYear

moment().dayOfYear();  //获取当天是一年中的第几天
moment().dayOfYear(Number);  //设置日期,接受 1 到 366 之间的数字。 如果超出范围,则它将会冒泡到年份。

week

moment().week(Number); // 设置该周是一年中的第几周
moment().week(); // 获取当前周是一年中的第几周

month

moment().month(Number|String); //设置月份是几月,接受 0 到 11 之间的数字。 如果超出范围,则它将会冒泡到年份。
moment().month(); // 获取当前月是几月,1月返回0moment().month("January");
moment().month(1);

quarter

moment().quarter(); // 获取季度,1~4
moment().quarter(Number); //设置季度,

year

moment().year(Number);  //设置年
moment().year(); // 获取当前年

get

moment().get('year');   //获取年
moment().get('month');  // 0 至 11
moment().get('date');   // 获取是该月的第几天
moment().get('hour');  // 获取小时
moment().get('minute'); // 获取分钟
moment().get('second');  // 获取秒
moment().get('millisecond');  //获取毫秒

set

moment().set('year', 2013);
moment().set('month', 3);  // 四月
moment().set('date', 1);
moment().set('hour', 13);
moment().set('minute', 20);
moment().set('second', 30);
moment().set('millisecond', 123);moment().set({'year': 2013, 'month': 3});

add

//增加日期,注意这里要加上s,比如days
moment().add(Number, String); 
moment().add(Object);moment().add(7, 'days').add(1, 'months'); // 链式
moment().add({days:7,months:1}); // 对象字面量

subtract

//减去日期,同add
moment().subtract(Number, String);
moment().subtract(Object);

startOf

//获取日期的开始
moment().startOf('year');    // 设置为今年一月1日上午 12:00
moment().startOf('month');   // 设置为本月1日上午 12:00
moment().startOf('quarter');  // 设置为当前季度的开始,即每月的第一天上午 12:00
moment().startOf('week');    // 设置为本周的第一天上午 12:00
moment().startOf('isoWeek'); // 根据 ISO 8601 设置为本周的第一天上午 12:00
moment().startOf('day');     // 设置为今天上午 12:00
moment().startOf('date');     // 设置为今天上午 12:00
moment().startOf('hour');    // 设置为当前时间,但是 0 分钟、0 秒钟、0 毫秒
moment().startOf('minute');  // 设置为当前时间,但是 0 秒钟、0 毫秒
moment().startOf('second');  // 与 moment().milliseconds(0); 相同

endOf

//获取日期的结束
moment().endOf(String);

format

格式化时间,具体格式见:http://momentjs.cn/docs/#/displaying/format/

 moment().format('YYYY-MM-DD');   // 2022-09-18moment().format('YYYY-MM-DD HH:mm:ss'); // 2022-09-18 20:33:58

toArray()

moment().toArray();  //以数组的形式返回时间,[ 2022, 8, 18, 20, 39, 53, 123 ]

简单的时钟

在momentjs中文网 首页,可以看到有一个时钟

在这里插入图片描述
在开发者模式中可以看到源码,不过是基于jq,这里使用vue来实现
在这里插入图片描述
在这里插入图片描述

实现

<template><div class="clock-container"><div class="clock-hour" :style="{transform:`rotate(${hour}deg`}"></div><div class="clock-minute" :style="{transform:`rotate(${minute}deg`}"></div><div class="clock-second" :style="{transform:`rotate(${second}deg`}"></div></div>
</template><script setup lang="ts">
import * as moment from 'moment';
import { ref, onMounted, onUnmounted } from 'vue';const timer = ref();
// 时、分、秒
const hour = ref(0);
const minute = ref(20);
const second = ref(30);onMounted(() => {timer.value = setInterval(runClock, 1000);
});onUnmounted(() => {timer.value = null;
});const runClock = () => {const now = moment();second.value = now.seconds() * 6;minute.value = now.minutes() * 6 + second.value / 60;hour.value = ((now.hours() % 12) / 12) * 360 + minute.value / 12;
};</script>
<style lang="scss" scoped>
$clock-color: blue;// 时钟容器
.clock-container {position: relative;width: 200px;height: 200px;background-color: $clock-color;border-radius: 50%;// transform: rotate(-360deg);// 设置内圈&::before {position: absolute;top: 5%;left: 5%;width: 90%;height: 90%;background-color: #fff;border-radius: 50%;content: "";}//中心的圆点&::after {position: absolute;top: 47%;left: 47%;width: 6%;height: 6%;background-color: $clock-color;border-radius: 50%;content: "";}
}// 时针
.clock-hour {position: absolute;top: 30%;left: calc(50% - 4px);width: 8px;height: 20%;background-color: $clock-color;border-radius: 5px;transform-origin: bottom;
}// 分钟
.clock-minute {position: absolute;top: 20%;left: calc(50% - 3px);width: 6px;height: 30%;background-color: $clock-color;border-radius: 5px;transform-origin: bottom;
}// 秒针
.clock-second {position: absolute;top: 15%;left: calc(50% - 2px);width: 4px;height: 35%;background-color: $clock-color;border-radius: 5px;transform-origin: bottom;
}
</style>

注:
不知道是不是我时针的初始样式有问题,源码中时针是 hour = ((now.hours() % 12) / 12) * 360 + 90 + minute / 12; 但是在demo中加上这个90位置就不对了,删掉之后就好了。

效果
在这里插入图片描述

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

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

相关文章

想换工作?那还不赶紧来看看这份面试题

引言 “寒冬”之下&#xff0c;诸如 “Android 凉了”之类的话我已经屡见不鲜了&#xff0c;现在互联网行业的热潮已经褪去&#xff0c;开始恢复冷静&#xff1b;这样一来&#xff0c;互联网公司就会面向大量的开发者们&#xff0c;因此对应的要求只会越来越高&#xff1b;据反…

用纯css实现一个图片拼接九宫格

<style> body{ margin: 0; padding: 0; // 设定居中 display: flex; justify-content: center; align-items: center; height: 100vh; } .container{ width: 300px; height: 300px; display: flex; // 子盒子布局&#xff0c;要让子盒子之间有间隙就把宽高设大一些。 jus…

报告分享|2022年中国机器人产业图谱及云上发展研究报告

报告链接&#xff1a;http://tecdat.cn/?p28681 报告在分析当前我国机器人市场现状与产业图谱的基础上&#xff0c;对人工智能、5G、云计算、边缘计算等新兴技术赋能机器人智能化、轻量化、柔性化发展进行了理性探讨&#xff0c;结合阿里云加速器企业案例探讨了机器人企业的上…

连接查询-mysql详解(五)

上篇文章说了&#xff0c;mysql5.6.6版本之前数据默认在系统表空间&#xff0c;之后默认在独立表空间&#xff0c;innodb因为索引和数据在一个b树&#xff0c;所以两个文件&#xff0c;一个文件结构&#xff0c;一个存数据&#xff0c;myISAM则是三个文件。一个聚簇索引有两个段…

小程序云开发学习笔记

小程序云开发学习笔记 初始化 在app.js里面 小程序一开始就初始化&#xff0c;多次调用只有第一次触发 onLaunch() { console.log("小程序打开"); wx.cloud.init({ env: ayang-8g50ew302a3a6c5a, //云开发id }) } 数据库操作 查询&#xff08;一定要配置数据权限&a…

高等工程数学 —— 第一章 (1)距离与范数

前言 研一生活开始了&#xff0c;看了大家对我之前博客的鼓励让我知道写博客是一件多么有意义的事情。写这些让我遇见许多陌生的有缘人&#xff0c;有老骥伏枥的大叔、也有可爱温暖的学妹…… 这里将高等工程数学的笔记留给不爱吃香菜的月亮&#xff0c;希望这些陪伴过我的微光…

ElasticSearch(四)【高级查询】

四、高级查询 说明 ES中提供了一种强大的检索数据方式&#xff0c;这种检索方式称之为Query DSL&#xff0c;Query DSL是利用Rest API传递JSON格式的请求体&#xff08;Request Body&#xff09;数据与ES进行交互&#xff0c;这种方式的丰富查询语法让ES检索变得更强大&#xf…

Grafana alert预警+钉钉通知

1 Grafana alert预警 如下图所示&#xff0c;主要是前3步&#xff0c;设置alert rules、contact points 、notification policies。alert rules主要设置触发警告的规则&#xff1b;contact points设置通过什么发送预警&#xff0c;如钉钉&#xff1b;notification policies 将…

哲学家干饭问题 C++

哲学家干饭问题 C 哲学家就餐问题可以这样表述&#xff0c;假设有五位哲学家围坐在一张圆形餐桌旁&#xff0c;做以下两件事情之一&#xff1a;吃饭&#xff0c;或者思考。吃东西的时候&#xff0c;他们就停止思考&#xff0c;思考的时候也停止吃东西。餐桌上有五碗意大利面&am…

Vue2.0到3.0的过渡,setup,ref函数,reactive函数,计算属性computed

setup 1、Vue3.0的组件中所有用到的:数据、方法等等&#xff0c;均要配置在setup中&#xff0c;若要使用里面的数据&#xff0c;可以用return将其返回出来 2、若在setup中返回的是一个对象&#xff0c;则对象中的数据、方法、在模板中均可直接使用 例如 <template><di…

[Git] 系列三随意修改提交记录以及一些技巧

[Git] 系列三随意修改提交记录以及一些技巧 Author: Xin Pan Date: 2022.09.17 文章目录[Git] 系列三随意修改提交记录以及一些技巧整理提交记录未知提交号哈希值时怎么办&#xff1f;一些技巧本地栈式提交方法一方法二TagDescribe高级命令总结好了&#xff0c;大概总结好了。…

搭建游戏要选什么样的服务器?

服务器是游戏平台数据传输的重要载体&#xff0c;事关我们游戏创业发展的稳定性、安全性。那么&#xff0c;游戏平台搭建要选什么服务器&#xff1f;有什么参考指标&#xff1f;本文将带领大家一探究竟&#xff01; 首先是“游戏平台搭建要选择什么服务器”&#xff0c;我们可…

论文阅读_对比学习_SimCSE

英文题目&#xff1a;SimCSE: Simple Contrastive Learning of Sentence Embeddings 中文题目&#xff1a;SimSCE&#xff1a;用简单的对比学习提升句嵌入的质量 论文地址&#xff1a;https://export.arxiv.org/pdf/2104.08821.pdf 领域&#xff1a;自然语言处理&#xff0c;对…

Redis的基本使用

1.Redis简介 &#xff08;1&#xff09;什么是Redis ①Redis是一个基于内存的key-value结构数据库 ②基于内存存储&#xff0c;读写性能高 ③适合存储热点数据(热点商品、资讯、新闻) ④Redis是一个开源的内存中的数据结构存储系统&#xff0c;它可以用作&#xff1a;数据库、…

计组--存储系统

存储系统 思维导图&#xff1a; 存储器概述 存储器的分类 按在计算机中的作用(层次)分类 主存储器&#xff0c;简称主存(内存) 存放计算机运行期间所需的程序和数据&#xff0c;CPU可以直接对其进行访问。 辅助存储器&#xff0c;简称辅存(外存) 辅存的内容需要调入主存后才…

普中A6开发版——XPT2046四引脚切换测量(含详细教程以及原理图等资料)

文章目录一、简介二、原理图以及手册三、接线四、选择数码管芯片原理讲解五、代码一、简介 本文介绍了XPT2046的使用方法以及普中A6开发版的接线等&#xff0c;并从原理图以及手册中摘选了详细的介绍&#xff0c;充分理解其工作原理。XPT2046本来是一个电阻式触摸屏控制器&…

监控系统架构方案

前言 对于企业级服务器管理&#xff0c;站群管理&#xff0c;针对服务器的监控是非常必要的。 通常&#xff0c;在电脑出现卡死&#xff0c;或进程停止或被挂起的情况下&#xff0c;大家都会使用任务管理器查看进程情况。针对电脑流畅性或资源优化&#xff0c;通常会使用资源管…

物联网开发笔记(19)- 使用Micropython开发ESP32开发板之连接WIFI热点

我们的ESP32开发板是拥有WIFI和蓝牙功能的。这里我们先告诉大家如何将ESP32开发板连接到我们家里的无线路由器上&#xff0c;并和连接到家里无线路由器的一台电脑进行通讯。 一、环境 ESP32开发板Thonny IDEWin10网络调试助手工具 后面设备联网的基本信息&#xff1a;开发板IP…

网课答案查题方法详细步骤

网课答案查题方法详细步骤 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#…

Dobbo微服务项目实战(详细介绍+案例源码) - 1.项目介绍及环境配置

系列文章目录 项目介绍及环境配置 文章目录系列文章目录一、项目介绍1. 功能2. 技术选型3. 页面预览⑴. 登录⑵. 交友&#xff08;主页&#xff09;⑶. 探花⑷. 搜附件⑸. 桃花传音⑹. 测灵魂⑺. 圈子⑻. 消息⑼. 小视频⑽. 我的二、开发工具1. YAPI2. Android模拟器3. 调试工…