网站首页 > 技术文章 正文
上回我们把主要结构写好了,今天我们把指针旋转逻辑实现了,下面我们就用JS代码实现。
主要内容:
- 在Date的原型上添加相关方法
- 利用添加的方法获取时分秒微秒数
- 将指针数转换为角度(84行)
经过下面的封装使用也是非常方便:
consg now = new Date;
const angle = now.getAngle();
// 示例时间 19:05:35
/*
结果为 {
"s": 213.20999999999998,
"m": 33.5535,
"h": 572.796125, // 此处角度多了360度 不影响观感
}
*/
/** 处理日期类方便后面使用 */
(function () {
/**
* JS自带的获取小时方法
* @type {int}
*/
const getHour = Date.prototype.getHours;
/**
* JS自带的获取分钟方法
* @type {int}
*/
const getMinute = Date.prototype.getMinutes;
/**
* 系统自带的获取秒的方法
* @type {int}
*/
const getSecond = Date.prototype.getSeconds;
/**
* 系统自带的获取月份的方法
* @type {int}
*/
const getMonth = Date.prototype.getMonth;
/**
* 整数的小于10 前面填充0 大于9则不变
* @param {int} num 待处理的整数
* @return {string} 处理好的数据转换为字符串
*/
const fillZero = function (num) {
if(num < 10) {
return '0' + num;
}
return '' + num;
}
/**
* 覆盖系统日期类原型上的获取小时的方法
* @return {string} 当前时间的小时
*/
Date.prototype.getHours = function() {
return fillZero(getHour.bind(this)());
};
/**
* 覆盖系统日期类原型上的获取分钟的方法
* @return {string} 当前时间的分钟数
*/
Date.prototype.getMinutes = function() {
return fillZero(getMinute.bind(this)());
};
/**
* 覆盖系统日期类原型上的获取秒的方法
* @return {string} 当前时间的秒数
*/
Date.prototype.getSeconds = function() {
return fillZero(getSecond.bind(this)());
};
/**
* 覆盖系统日期类原型上的获取月份的方法
* @return {string} 当前时间的月份
*/
Date.prototype.getMonth = function () {
let m = getMonth.call(this);
return fillZero(m + 1);
};
/**
* 覆盖系统日期类原型上的获取微秒的方法
* @return {string} 当前时间的微秒数
*/
Date.prototype.getMicroSeconds = function () {
let t = this.getTime();
return (''+t).slice(-3) / 1000;
}
/**
* 给系统自带日期类添加获取当前日期角度的方法 (角度值)
* @return {object} 当前时间时分秒指针对应的角度
* h:时针对应的角度
* m:分针对应的角度
* s:秒针对应的角度
*/
Date.prototype.getAngle = function () {
let micrs = this.getMicroSeconds();
let s = getSecond.call(this);
s = (s+micrs) * 6;
let m = getMinute.call(this);
m = m * 6 + s * 6/360;
let h = getHour.call(this);
h = h * 30 + ((m * 30)/360);
return {s,m,h};
};
Date.prototype.getDateTime = function () {
return `${this.getFullYear()}/
${this.getMonth()}/
${fillZero(this.getDate())}
${this.getTimes()}`;
};
Date.prototype.getTimes = function () {
return `${this.getHours()}:
${this.getMinutes()}:
${this.getSeconds()}`;
};
} ());
- 上一篇: js之日期函数Date js中日期对象
- 下一篇: Day.js优雅的解决前端处理时间戳的痛点
猜你喜欢
- 2025-07-06 为什么前端大佬都推荐用 performance.now() 而非 Date.now()?
- 2025-07-06 实战分享:邀请有礼产品怎么做?(邀请有礼活动)
- 2025-07-06 揭秘:视频播放网站如何精准记录用户观看进度
- 2025-07-06 第七篇 前端基础十问,看看你是否真的掌握扎实?
- 2025-07-06 下单预约送货时间功能设计及思路(预约送货怎么说)
- 2025-07-06 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
- 2025-07-06 前端代码更新,如何优雅地通知用户刷新页面?
- 2024-10-09 JS Date对象的妙用:如何更优雅的计算时间差?
- 2024-10-09 从零开始的前端请求之旅 从零开始学前端开发
- 2024-10-09 如何在上班时间利用终端控制台摸鱼??????
你 发表评论:
欢迎- 593℃几个Oracle空值处理函数 oracle处理null值的函数
- 586℃Oracle分析函数之Lag和Lead()使用
- 574℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 571℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 567℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 559℃【数据统计分析】详解Oracle分组函数之CUBE
- 546℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 540℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)