JS:处理日期时间,实现格式化的方法与简单封装
xsobi 2024-12-17 17:07 16 浏览
获取当前时间,格式为:2020/07/04 17:00(此时此刻)
获取指定时间,格式为:2020/07/05 17:00(一天后,即明天的此时此刻)
一、实现思路
1. 创建一个方法,将传入的日期对象处理后,返回指定格式的字符串,先贴上代码:
// 格式化 日期时间
function formatDateTime(date = new Date()) { //不传date则默认当前时间
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
// 不足两位,添“0”
month = month < 10 ? "0" + month: month;
day = day < 10 ? "0" + day: day;
hour = hour < 10 ? "0" + hour: hour;
minute = minute < 10 ? "0" + minute: minute;
second = second < 10 ? "0" + second: second;
return year + "/" + month + "/" + day + " " + hour + ":" + minute + ":" + second;
}
// 此时此刻
let today = formatDateTime();
console.log("此时此刻:", today);
// 明天的此时此刻
let t = new Date().getTime() + 60 * 60 * 24 * 1000; //24小时后的时间戳
let tomorrow = formatDateTime(new Date(t));
console.log("明天的此时此刻:", tomorrow);
2. 代码解析:
formatDateTime():传入Date对象,获取年月日、时分秒,返回处理后的日期时间字符串;
today:调用时不传参,即获取此时此刻的日期字符串;
tomorrow:参数为明天(此时此刻)的日期字符串;
t = new Date().getTime() + 60 * 60 * 24 * 1000:当前时间戳 + 24小时的毫秒值 = 明天(此时此刻)的时间戳,且new Date(t)将时间戳转为Date对象,最终得到明天(此时此刻)的日期字符串。
控制台输出:
此时此刻: 2020/07/04 17:00明天的此时此刻: 2020/07/05 17:00
二、代码优化
1. 基于以上思路,再加入多个参数,实现自定义分隔符等,同样先贴出代码:
// 格式化 日期时间
function formatDateTime(date = new Date(), p1 = "-", p2 = ":") {
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
return [year, month, day].map(formatNumber).join(p1) + " " + [hour, minute, second].map(formatNumber).join(p2);
}
// 格式化 日期数字
function formatNumber(n) {
n = n.toString();
return n[1] ? n: "0" + n;
}
// 此时此刻
let today = formatDateTime(undefined, "/");
console.log("此时此刻:", today);
// 明天的此时此刻
let t = new Date().getTime() + 60 * 60 * 24 * 1000; //24小时后的时间戳
let tomorrow = formatDateTime(new Date(t), "/");
console.log("明天的此时此刻:", tomorrow);
2. 代码解析:
formatDateTime():加入分隔符参数,不传则使用默认值;
formatNumber():数字不足两位,在前面补“0”并返回;
today:传入undefined,判断不存在,即使用默认值;
tomorrow:传入自定义的日期对象。
控制台输出:
此时此刻: 2020/07/04 17:00
明天的此时此刻: 2020/07/05 17:00
三、更多
或者改为箭头函数:
// 格式化 日期时间
var formatDateTime = (date = new Date(), p1 = "-", p2 = ":") =>{
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
return [year, month, day].map(formatNumber).join(p1) + " " + [hour, minute, second].map(formatNumber).join(p2);
};
// 格式化 日期数字
var formatNumber = (n) =>{
n = n.toString();
return n[1] ? n: "0" + n;
};
私信发送:200704,获取代码文件(和文中内容一致)
相关推荐
- URL缩短器:详细说明
-
介绍URL缩短器是一种用于从非常长的URL创建短链接的服务。通常,短链接的大小是原始URL的三分之一甚至四分之一,这使得它们更易于键入,呈现或发布。单击短链接用户将自动重定向到原始URL。在线提供许...
- Python 3中字节转换为字符串的方法
-
技术背景在Python3里,字节(...
- 白帽子分享之代码的艺术系列—第二篇
-
0x01前言现在的WEB程序基本都有对SQL注入的全局过滤,运维人员配置PHP环境是一般会开启魔术引号GPC,即magic_quotes_gpc=On的情况下,如果输入的数据有单引号(’)、双引号(...
- 一文带你看懂Golang最新特性
-
作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。...
- 闲来无事,学学Mysql增、删,改,查
-
Mysql增、删,改,查1“增”——添加数据1.1为表中所有字段添加数据1.1.1INSERT语句中指定所有字段名...
- 铭说 | 一句话木马的多种变形方式
-
今天来和大家聊一聊,一句话木马...
- php json_decode返回null
-
functionposturl($gateurl,$data){$headers=array("Content-type:application/x-www-form-url...
- Oracle用decode函数或CASE-WHEN实现自定义排序
-
1问题对SQL排序,只要在orderby后面加字段就可以了,可以通过加desc或asc来选择降序或升序。但排序规则是默认的,数字、时间、字符串等都有自己默认的排序规则。有时候需要按自己的想法来排序...
- oracle 函数decode用法
-
DECODE含义decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)这个是decode的表达式,具体的含义解释为:IF条件=值1THENRETURN(翻译值1)ELSIF...
- 别再用 System.currentTimeMillis了,试试 StopWatch吧,够优雅
-
大家好,我是二哥呀!昨天,一位球友问我能不能给他解释一下...
- 全局视角看技术-Java多线程演进史
-
作者:京东科技文涛全文较长共6468字,语言通俗易懂,是一篇具有大纲性质的关于多线程的梳理,作者从历史演进的角度讲了多线程相关知识体系,让你知其然知其所以然。前言2022年09月22日,JDK19发...
- C++程序员学习Zig指南(中篇)
-
1.复合数据类型结构体与方法的对比C++类:...
- Java 线程的生命周期及各阶段状态
-
每个事物都有其生命周期,也就是事物从出生开始到最终消亡这中间的整个过程;在其整个生命周期的历程中,会有不同阶段,每个阶段对应着一种状态,比如:人的一生会经历从婴幼儿、青少年、青壮年、中老年到最终死亡,...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- characterencodingfilter (33)
- getmonth (34)
- label换行 (33)
- android studio 3 0 (34)
- html转js (35)
- 索引的作用 (33)
- checkedlistbox (34)
- xmlhttp (35)
- mysql更改密码 (34)
- 权限777 (33)
- htmlposition (33)
- 学校网站模板 (34)
- textarea换行 (34)
- 轮播 (34)
- asp net三层架构 (38)
- bash (34)