react中如何系统化的处理时间操作?

news/2024/5/17 5:26:45/文章来源:https://blog.csdn.net/BradenHan/article/details/130277670

在 Web 开发中,我们经常需要处理日期和时间的格式化。

在 React 中,这个过程变得更加容易和直观,因为我们可以使用一个叫做 moment 的 npm 包来帮助我们完成这个任务。

什么是 Moment?

Moment.js是一个JavaScript库,用于处理日期和时间。它是一个轻量级的库,在处理日期和时间方面非常强大。

Moment.js提供了许多有用的功能,包括格式化日期和时间、比较日期、添加和减去时间等。

下载地址:http://momentjs.cn/

Moment 被设计为在浏览器和 Node.js 中都能工作。

所有的代码都应该在这两种环境中都可以工作,并且所有的单元测试都应该在这两种环境中运行。

系统当前使用以下的浏览器:Windows XP 上的 Chrome,Windows 7 上的 IE 8、9 和 10,Windows 10 上的 IE 11,Linux 上最新的 Firefox,OSX 10.8 和 10.11 上最新的 Safari。

如何使用 Moment?

安装

我们可以使用 以下任意一种方式 安装 moment。

npm install moment --save   # npm
yarn add moment             # Yarn
Install-Package Moment.js   # NuGet
spm install moment --save   # spm
meteor add momentjs:moment  # meteor 

引入组件

在安装完成后,我们就可以在 React 组件中导入 moment 了。

import moment from 'moment'; 

使用 moment 格式化时间

<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
<h3>当前时间:{moment().format('YYYY-MM-DD HH:mm:ss')}</h3>
<h3> 今天星期几:{moment().format('d')}</h3>
<h3>时间戳{moment().format('X')}</h3>
<h4>2年前:{moment("2017-10-01", "YYYY-MM-DD").fromNow()}</h4>
<h1>20天后的日期:{moment().add('days',20).format('YYYY年MM月DD日')}</h1>
<h2>9小时后:{moment().add('hours',9).format('HH:mm:ss')}</h2>
<h1>第几季度:{moment().quarter()}</h1>
<h2>年:{moment().year()}</h2>
<h2>周:{moment().week()}</h2>
<h2>周:{moment().isoWeeks()}</h2>
<h2>时间:{moment().calendar()}</h2> 

完整代码

import React from "react"; 
import moment from 'moment';export default function MomentComponent() {return (<div><h1>Hello, world!</h1><h2>It is {this.state.date.toLocaleTimeString()}.</h2><h3>当前时间:{moment().format("YYYY-MM-DD HH:mm:ss")}</h3><h3> 今天星期几:{moment().format("d")}</h3><h3>时间戳{moment().format("X")}</h3><h4>2年前:{moment("2017-10-01", "YYYY-MM-DD").fromNow()}</h4><h1>20天后的日期:{moment().add("days", 20).format("YYYY年MM月DD日")}</h1><h2>9小时后:{moment().add("hours", 9).format("HH:mm:ss")}</h2><h1>第几季度:{moment().quarter()}</h1><h2>年:{moment().year()}</h2><h2>周:{moment().week()}</h2><h2>周:{moment().isoWeeks()}</h2><h2>时间:{moment().calendar()}</h2></div>);
}

moment 常用命令

获取当前时间

//获取 当前时间
moment().format('YYYY-MM-DD HH:mm:ss');   //2020-08-25 10:23:59//获取年份
moment().year();       //2020
moment().get('year');  //2020//获取月份(0:一月份  11: 12月份 )
moment().month();       //7
moment().get('month');  //7//获取一个月的某一天
moment().date();       //25
moment().get('date');  //25//获取小时
moment().hours();          //11
moment().get('hours');     //11//获取分钟
moment().minutes();        //11
moment().get('minutes');   //11//获取秒数
moment().seconds();        //17
moment().get('seconds');   //17//获取 今天星期几
moment().format('dddd');     //Tuesday
moment().format('d');        //2moment().day();              //2(0~6 分别代表周日到周六)
moment().weekday();          //2(0~6 分别代表周日到周六)
moment().isoWeekday();       //2(1~7 分别代表周一到周日)
moment().get('date');        //2
moment().get('weekday');     //2
moment().get('isoWeekday');  //2

时间戳

时间戳:moment().format('X');

将时间戳转为时间

const dataTime = record.favTime;
let time= moment(dataTime).format('YYYY-MM-DD HH:mm:ss');

相对时间

相对时间:moment("20190101", "YYYYMMDD").fromNow();
10天后的日期:moment().add('days',10).format('YYYY年MM月DD日');
10小时后:moment().add('hours',10).format('HH:mm:ss');//add       加时间    
//subtract  减时间
moment().subtract(10, 'days').format('YYYY-MM-DD HH:mm:ss');  //2020-08-15 10:51:48
moment().subtract(6, 'days').format('YYYY-MM-DD HH:mm:ss');  //2020-08-19 10:51:48
moment().subtract(3, 'days').format('YYYY-MM-DD HH:mm:ss');  //2020-08-22 10:51:48
moment().subtract(1, 'days').format('YYYY-MM-DD HH:mm:ss');  //前一天:2020-08-24 10:51:48
moment().format('YYYY-MM-DD HH:mm:ss');                      //当前时间:2020-08-25 10:51:48
moment().add(1, 'days').format('YYYY-MM-DD HH:mm:ss');       //后一天:2020-08-26 10:51:48
moment().add(3, 'days').format('YYYY-MM-DD HH:mm:ss');       //2020-08-28 10:51:48
moment().add(10, 'days').format('YYYY-MM-DD HH:mm:ss');      //2020-09-04 10:51:48moment().subtract(1, 'year').format('YYYY-MM-DD HH:mm:ss');  //前一年:
moment().add(1, 'year').format('YYYY-MM-DD HH:mm:ss');       //后一年:moment().subtract(1, 'hours').format('YYYY-MM-DD HH:mm:ss');  //前一小时:
moment().add(1, 'hours').format('YYYY-MM-DD HH:mm:ss');       //后一小时:
// startOf 设置为起始时间 
moment("20111031", "YYYYMMDD").fromNow();    //9 years ago
moment().startOf('day').fromNow();           //11 hours ago
moment().startOf('hour').fromNow();          //an hour ago
moment().endOf('day').fromNow();             //in 13 hours
moment().endOf('hour').fromNow();            //in 15 minutes//年初
moment().startOf('year').format('YYYY-MM-DD HH:mm:ss');   //2020-01-01 00:00:00
//月初
moment().startOf('month').format('YYYY-MM-DD HH:mm:ss');  //2020-08-01 00:00:00
//日初
moment().startOf('day').format('YYYY-MM-DD HH:mm:ss');    //2020-08-25 00:00:00
//周初  本周第一天(周日)
moment().startOf('week').format('YYYY-MM-DD HH:mm:ss');   //2020-08-23 00:00:00
//本周周一初
moment().startOf('isoWeek').format('YYYY-MM-DD HH:mm:ss');  //2020-08-24 00:00:00

设置时间

//设置年份
moment().year(2019);
moment().set('year', 2019);
moment().set({year: 2019});//设置月份
//0~11, 0: 1月份, 11: 12月份
moment().month(8);        
moment().set('month', 8);//设置  某个月中的某一天  某个周中的某一天  小时  分钟  秒数  同上,这里就不写了

格式化指定时间:

//格式化指定时间
moment(time).format('YYYY-MM-DD');

时间差

now_time.diff(start_time,"hour");      //小时数
now_time.diff(start_time,"minute");    //分钟数
now_time.diff(start_time,"second");    //现在和初始时间相差的秒数
now_time.diff(start_time, 'months');   //月数
now_time.diff(start_time, 'weeks');    //周数
now_time.diff(start_time, 'days');     //天数

更加详细内容,请查看 http://momentjs.cn/docs/

参考文档

  • https://blog.csdn.net/qq_43652492/article/details/108214803
  • http://momentjs.cn/

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

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

相关文章

Vue2组件通信专题

组件通信专题 一、vue2中常用的6中组件通信方式 1. props 适用于的场景&#xff1a;父子组件通信 注意事项&#xff1a; 如果父组件给子组件传递数据&#xff08;函数&#xff09;&#xff1a;本质其实是子组件给父组件传递数据。 如果父组件给子组件传递数据&#xff08…

水质站房式在线监测系统集方案要点

水质在线自动监测系统是一套高度集成的一体化水质自动监测系统&#xff0c;其中包含水样采集处理、水质自动分析、数据采集传输、远程操作监控于一体的在线全自动监控系统。 本次方案整体系统采用一体化集成方式&#xff0c;辅助设备工艺制作精细&#xff0c;同时系统工艺流程…

使用计算机视觉实战项目精通 OpenCV:6~8

原文&#xff1a;Mastering OpenCV with Practical Computer Vision Projects 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线…

Android开发—入门Kotlin编程语言

一、Kotlin简介 为什么Kotlin能代替Java此为Android官方第一支持的开发语言&#xff1f; 1&#xff09;Kotlin的语法更加简洁&#xff0c;对于同样的功能&#xff0c;使用Ktolin开发的代码量可能会比使用Java开发减少50%甚至更多&#xff1b; 2&#xff09;Kotlin语法更加高…

串口UART介绍

【记录所学】 1. 串口的硬件介绍 UART的全称是Universal Asynchronous Receiver and Transmitter&#xff0c;即异步发送和接收。串口在嵌入式中用途非常的广泛&#xff0c;主要的用途有&#xff1a; 打印调试信息&#xff1b;外接各种模块&#xff1a;GPS、蓝牙&#xff1b…

DHCP故障定位

1.请分析可能的原因,定位并排除故障。 (1)存在仿冒DHCP服务器攻击 导致部分有线终端获取到错误的IP地址、网关等信息,进而导致无法访问网关。 解决办法:为了防止DHCP Server仿冒者攻击,将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其他接口设置为非信信任接…

java版工程项目管理系统源代码-功能清单 图文解析

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C++)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦&#xff08;C&#xff09; Baumer工业相机Baumer工业相机BGAPISDK中控制变焦镜头的技术背景代码案例分享第一步&#xff1a;开启相机自动调焦功能模块第二步&#xff1a;控制自动变焦镜头电机的…

进制数转换知识点总结

二进制和十六进制 用0和1表示各种信息 计算机的电路由逻辑门电路组成。一个逻辑门电路可以看成一个开关&#xff0c;每个开关的状态是“开"&#xff08;高电位&#xff09;或“关”&#xff08;低电位&#xff09;&#xff0c;即对应于1或0 课程推荐 【【计算机科学速成…

c++学习之类与对象3

目录 成员变量和函数的存储 this指针 this指针的工作原理 this指针的应用 const修饰的成员函数 友元 友元的语法 1.普通全局函数成为类的友元 2.类的某个成员函数作为另一个类的友元 整个类作为另一个类的友元 运算符重载 1 运算符重载的基本概念 2 重载加号运算符…

[架构之路-169]-《软考-系统分析师》-4-据通信与计算机网络-0-Ad hoc网络(分组无线网络)

目录 什么是Ad hoc网络 adhoc无线网络的历史 ad hoc特点 独立性 结构 通信带宽 主机能源 分布式特性 生存周期 物理安全 adhoc无线网络的结构 adhoc无线网络的应用 什么是Ad hoc网络 Ad hoc是一种多跳的、无中心的、自组织无线网络&#xff0c;又称为多跳网&#xff08;M…

详解C语言string.h中常见的13个库函数(上)

我计划讲解C语言string.h这个头文件中&#xff0c;最常见的13个库函数。为了让大家更加深入的理解这些函数&#xff0c;部分函数我会模拟实现。篇幅所限&#xff0c;如果文章太长了&#xff0c;可能会较难坚持读完&#xff0c;所以我会分几篇博客来讲述。本篇博客主要讲解的函数…

《数据结构》---术语篇

目录 前言: 一.术语 1.1数据 1.2数据结构 1.3逻辑结构和物理结构 二.数据类型和抽象数据类型 ​​​​​​​ ❤博主CSDN&#xff1a;啊苏要学习 ▶专栏分类&#xff1a;数据结构◀ 学习数据结构是一件有趣的事情&#xff0c;希望读者能在我的博文切实感受到&#xff0c…

Spring原理学习(六):Spring实现动态代理时对jdk和cglib的选择

目录 〇、前言 一、AOP中的一些基本概念 二、两个切面的概念 三、advisor的使用 3.1 前置知识 3.2 使用步骤 四、spring对jdk和cglib的统一 〇、前言 对jdk和cglib 实现动态代理的原理不清楚的兄弟们&#xff0c;可以参考前文&#xff1a;Spring原理学习&#xff08;…

windows系统本地批量预览svg图标

一、为何需要此操作 目前前端使用图标大致分为两类&#xff1a; iconfont方式&#xff1a;通过引入在线或者下载到本地的iconfont.css类文件实现显示图标第二类是封装图标组件&#xff0c;通过传入指定的svg名称快速生成图标 目前第二种是比较方便的&#xff0c;不需要频…

PasteSpider之关于字符串模板占位字符等的说明

PasteSpider中&#xff0c;构建&#xff0c;部署等都是通过命令执行的&#xff0c;为了更加的灵活&#xff0c;引入了不同的变量&#xff0c;以便适合不同的需求使用。 命令占位符 注&#xff01;&#xff01;&#xff01;&#xff0c;占位符的格式为{{对象.属性}},他们之间没有…

Hive-hive核心面试范围题目整理(数据倾斜、外部表内部表、分区分桶、行转列等)

1 hive的优缺点 优点 SQL减少MR的开发难度使用于实时性不高的数据分析场合优势处理大数据自定义函数 缺点 Hql表达能力优先&#xff1a;迭代式算法&#xff1f; 处理延迟效率较低&#xff0c;小数据的时候&#xff0c;不如传统数据库 2 对hive的了解 优点本质&#xff1…

【CSS3】CSS3 伪元素字体图标 ( 生成 icommon 字体文件 | 字体图标基本使用 | 使用伪元素实现 icommon 字体图标显示 )

文章目录 一、icommon 字体图标基本使用1、生成 icommon 字体文件2、字体图标基本使用 二、使用伪元素实现 icommon 字体图标显示 一、icommon 字体图标基本使用 字体图标 指的是 将图标做成字体样式 , 在 放图标的地方 使用 文字 即可实现 图标显示 ; 1、生成 icommon 字体文件…

【Linux】system V 消息队列 | system V 信号量(简单赘述)

文章目录 1 . system V 消息队列(了解)接口查看消息队列 2.system V 信号量 (了解)1.进程互斥等概念的理解2.认识信号量3. 接口 这两部分主要是了解即可&#xff0c;为后面学习做铺垫 1 . system V 消息队列(了解) 为了让两个进程间通信 创建一个队列queue 进程A可以通过消息队…

[数据结构 - C语言] 顺序表

目录 1、线性表 2、顺序表 2.1 顺序表的概念 2.2 接口 3、接口实现 3.1 初始化 3.2 销毁 3.3 容量检测 3.4 打印数据 3.5 顺序表的头插 3.6 顺序表的尾插 3.7 顺序表的头删、尾删 3.8 顺序表查找 3.9 指定位置插入数据 1、线性表 线性表&#xff08;linear list&…