爱收集资源网

()基于以上思路,实现思路1.创建一个

网络整理 2022-04-14 04:00

获取当前时间,格式为: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对象js取本地时间,获取年月日时分秒,返回处理后的日期时间字符串;

tod​​ay:调用时不传参数,即获取此时的日期字符串;

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():添加delimiter参数,如果不传入,使用默认值;

formatNumber():如果数字小于两位,在前面加“0”并返回;

tod​​ay:如果传入undefined,如果不存在,则使用默认值;

明天:传入自定义日期对象。

控制台输出:

此时: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;
};

私信:200704js取本地时间,获取代码文件(与文中内容一致)

此刻 字符 传入