新闻中心

使用J*aScript实现时间格式化与计算_j*ascript工具函数

2025-11-06
浏览次数:
返回列表
答案:封装时间格式化与相对时间计算函数可提升开发效率。通过formatTime将日期转为“YYYY-MM-DD HH:mm:ss”等格式,支持自定义输出;利用timeAgo计算时间差,返回“刚刚”“3分钟前”等人性化提示,增强用户体验。

使用javascript实现时间格式化与计算_javascript工具函数

在日常开发中,时间的格式化与计算是常见的需求。J*aScript 提供了原生的 Date 对象,但其默认输出不够友好,且缺少一些便捷操作。通过封装工具函数,我们可以更高效地处理时间相关的逻辑。

时间格式化:将日期转为可读字符串

很多时候需要将 Date 对象转换成“YYYY-MM-DD HH:mm:ss”这样的格式。可以写一个通用的格式化函数:

function formatTime(date, format = 'YYYY-MM-DD HH:mm:ss') {
  const d = date instanceof Date ? date : new Date(date);
  if (isNaN(d.getTime())) throw new Error('Invalid Date');

  const year = d.getFullYear();
  const month = String(d.getMonth() + 1).padStart(2, '0');
  const day = String(d.getDate()).padStart(2, '0');
  const hour = String(d.getHours()).padStart(2, '0');
  const minute = String(d.getMinutes()).padStart(2, '0');
  const second = String(d.getSeconds()).padStart(2, '0');

  return format
    .replace(/YYYY/g, year)
    .replace(/MM/g, month)
    .replace(/DD/g, day)
    .replace(/HH/g, hour)
    .replace(/mm/g, minute)
    .replace(/ss/g, second);
}

使用示例:

// formatTime(new Date()) → "2025-04-05 14:30:22"
// formatTime(Date.now(), 'YYYY/MM/DD') → "2025/04/05"

时间差计算:获取两个时间之间的间隔

常用于显示“刚刚”、“3分钟前”、“昨天”等相对时间描述,或精确计算天数、小时等。

function timeAgo(timestamp) {
  const now = Date.now();
  const diff = Math.floor((now - new Date(timestamp)) / 1000);

  if (diff
  if (diff
  if (diff
  if (diff
  return `${Math.floor(diff / 86400)}天前`;
}

如果需要精确的时间差对象,可用:

BrandCrowd BrandCrowd

一个在线Logo免费设计生成器

BrandCrowd 200 查看详情 BrandCrowd function diffTime(start, end) {
  const startTime = new Date(start).getTime();
  const endTime = new Date(end).getTime();
  const diffMs = Math.abs(endTime - startTime);

  const seconds = Math.floor(diffMs / 1000);
  const minutes = Math.floor(seconds / 60);
  const hours = Math.floor(minutes / 60);
  const days = Math.floor(hours / 24);

  return { days, hours: hours % 24, minutes: minutes % 60, seconds: seconds % 60 };
}

常用时间快捷获取

项目中经常需要获取“今天零点”、“本周一”、“本月第一天”等特殊时间点,可以封装辅助函数:

// 获取当天 00:00:00 的时间戳
function getTodayStart() {
  const now = new Date();
  return new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
}

// 获取本月第一天
function getMonthFirstDay() {
  const now = new Date();
  return new Date(now.getFullYear(), now.getMonth(), 1).getTime();
}

// 获取本周一 00:00:00
function getMondayOfThisWeek() {
  const now = new Date();
  const day = now.getDay() || 7; // 周日返回0,转为7
  const diff = now.getDate() - day + 1;
  return new Date(now.setDate(diff)).setHours(0, 0, 0, 0);
}

这些函数在做数据统计、筛选条件时非常实用。

基本上就这些,你可以根据项目需要扩展更多功能,比如支持时区、国际化格式等。核心思路是:封装重复逻辑,提升代码可读性和复用性。

以上就是使用J*aScript实现时间格式化与计算_j*ascript工具函数的详细内容,更多请关注其它相关文章!


# 单元测试  # 建设一个社交网站  # 宁波优化网站电话  # SEO人才补贴证书推荐  # 阿勒泰网站建设推广公司  # 成都正规网站seo推广优化  # 枣庄网站建设 公司招聘  # seo营销机器人  # 东莞网络营销推广运营  # 付费网站推广服务商  # 可视化手机网站建设  # 我们可以  # 你可以  # 本周  # javascript  # 有何不同  # 端到  # 如何实现  # 如何用  # 命令行  # 化与  # 2025  # yy  # 代码可读性  # 工具  # go  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度  漫蛙网页登录入口 漫蛙漫画官方授权网址  mcjs网页版在线存档 mcjs云存档登录入口  Python中高效访问嵌套字典与列表中的键值对  谷歌google账号怎么注册账号 谷歌账号注册官方流程  PDF文件体积过大处理_PDF压缩技巧详解  LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  Angular Material 垂直步进器:实现底部到顶部排序的教程  AO3最新官网入口公告_2025AO3镜像站实时查询方法  批改网学生版PC登录 批改网官网登录系统入口  包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接  深入理解J*a合成构造器:何时以及为何阻止其生成  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  Pandas DataFrame 多条件优先级排序与排名  实现分段式页面滚动导航:CSS与J*aScript教程  PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  163邮箱官方主页登录 直达网易邮箱登录核心页面  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  极兔快递快件信息查询系统 极兔快递官网运单号追踪  必由学官网首页入口 必由学教师网页版登录指南  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  windows10怎么查看本机ip_windows10命令提示符ipconfig使用  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】  漫蛙2漫画入口 漫蛙正版网页漫画直达网址  如何在CSS中使用visited与link控制链接颜色_visited link伪类配合  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  Lar*el Excel导入时生成自定义递增ID的策略与实践  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  Lar*el 8 多关键词数据库搜索优化实践  CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  夸克浏览器图书入口 夸克手机浏览器阅读入口  小米汽车11月交付量突破40000台!雷军:将继续努力  163邮箱注册官网 免费申请163个人邮箱  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  京东单号查询入口_京东快递订单追踪入口  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  漫蛙官网正版漫画入口 漫蛙2官方网页登录地址  解决Python单元测试中Mock异常方法调用计数为零的问题  CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题  Go语言中Map值调用指针接收器方法的限制与应对  HTML长属性值处理:表单action路径优化与代码规范应对  c++20的std::jthread是什么_c++可中断线程与RAII式管理  从J*aScript对象中精确提取指定属性的教程  word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法 

搜索