javascript日期如何处理_如何格式化和计算日期【教程】
技术百科
狼影
发布时间:2026-01-25
浏览: 次 JavaScript Date 对象需区分 UTC 与本地时区:toISOString() 返回 UTC 标准化字符串,toLocaleString() 返回本地时区不可控格式;安全加 7 天用 setDate(),格式化 "YYYY-MM-DD" 应手动取年月日补零。
JavaScript 原生 Date 对象本身不提供安全、可读的格式化方法,直接拼字符串或用 toString() 会受时区和浏览器实现差异影响;日期计算(如加减天数、获取月初)也容易因忽略月份天数不均、闰年、时区偏移而出错。
为什么 new Date().toISOString() 和 new Date().toLocaleString() 结果不一样
前者返回 UTC 时间的标准化字符串("2025-05-20T08:30:00.000Z"),后者返回**本地时区**下的格式化结果,且格式不可控(比如中文系统可能带“年/月/日”,英文系统用斜杠或短横)。两者本质不是同一时间点的“不同写法”,而是不同时间基准(UTC vs 本地)。
- 跨时区应用(如后台 API 期望 UTC)必须用
toISOString()或手动调getUTCFullYear()等 UTC 系列方法 - 仅用于页面展示且无需精确时区语义时,
toLocaleDateString({ year: 'numeric', month: '2-digit', day: '2-digit' })更可靠 - 避免用
new Date().toString().substring(0, 15)截取——不同环境返回长度和分隔符可能不同
如何安全地给日期加 7 天(不踩时区坑)
直接改 date.setDate(date.getDate() + 7) 是正确做法,它操作的是“本地日期值”,不会触发时区换算。但要注意:如果原始 Date 对象是通过字符串(如 "2025-05-20")创建的,它会被解析为 UTC 零点,再转成本地时间——这会导致意外偏移。
- 从字符串初始化日期时,显式指定时区:
new Date("2025-05-20T00:00:00")(ISO 格式默认 UTC)或new Date("2025-05-20T00:00:00+0800") - 若需纯日期运算(忽略时间部分),先归零时间:
date.setHours(0,0,0,0); date.setDate(date.getDate() + 7); - 不要用毫秒加减(
date.getTime() + 7*24*60*60*1000)——夏令时切换日可能导致误差(比如某地少/多 1 小时)
格式化成 "YYYY-MM-DD" 最简稳方案
不用第三方库时,手写格式化最稳妥的方式是分别取年月日并补零,而非依赖 toJSON() 或正则截取——因为 toJSON() 仍返回带时间的 ISO 字符串,而 Date 构造函数对非标准字符串解析行为不一致。
function formatDate(date) {
const y = date.getFullYear();
const m = String(date.getMonth() + 1).padStart(2, '0');
const d = String(date.getDate()).padStart(2, '0');
return `${y}-${m}-${d}`;
}
-
getMonth()返回 0–11,必须 +1 -
padStart(2, '0')比slice(-2)更直观且无隐式类型转换风险 - 此函数输出与本地日期一致;若需 UTC 版本,改用
getUTCFullYear()、getUTCMonth()、getUTCDate()
真正麻烦的从来不是“怎么写”,而是“什么时候该用本地时间、什么时候该用 UTC”。一个 Date 对象内部始终存的是毫秒数

# 的是
# 它会
# 英文
# 能带
# 若需
# 第三方
# 而非
# 什么时候
# 浏览器
# js
# json
# 对象
# javascript
# java
# 构造函数
# 字符串
# git
# 为什么
# 隐式类型转换
# 类型转换
# 该用
# date
# yy
# 字符串解析
# 加减
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Windows10如何更改盘符名称_Win10重命
- 如何使用Golang操作指针变量_Golang解引
- Windows蓝屏错误0x00000018怎么处理
- Windows10如何更改桌面背景_Win10个性
- Windows10电脑怎么连接蓝牙设备_Win10
- php条件判断怎么写_ifelse和switchc
- 如何提升Golang程序I/O性能_Golang
- Win11怎么压缩文件 Win11自带压缩解压功能
- Win11怎么关闭VBS安全性_Windows11
- c++ stringstream用法详解_c++字
- Go 中实现 Python urllib.quot
- Python实现图数据库操作_Neo4j核心CRU
- LINUX如何删除用户和用户组_Linux use
- 如何使用Golang安装依赖库_管理模块和第三方包
- c++中的Tag Dispatching是什么_c
- mac怎么分屏_MAC双屏显示与分屏操作技巧【指南
- LINUX如何查看文件类型_Linux中file命
- 如何在Golang中处理云原生事件_使用Event
- Win11讲述人怎么关闭_Win11误触开启语音朗
- C++如何编写函数模板?(泛型编程入门)
- Python多进程教程_multiprocessi
- Win11开始菜单打不开_修复Windows 11
- php报错怎么查看_定位PHP致命错误与警告的方法
- C#怎么使用委托和事件 C# delegate与e
- Win11开机Logo怎么换_Win11自定义启动
- Win11怎么关闭键盘按键音_Win11禁用打字声
- 如何在Golang中编写端到端测试_Golang
- Windows10系统怎么查看CPU温度_Win1
- 如何在包含多值的列中精准搜索指定演员?
- Win11怎样安装钉钉客户端_Win11安装钉钉教
- Windows10如何查看蓝屏日志_Win10使用
- 如何在 Go 中调用动态链接库(.so)中的函数
- 如何用正则与预处理结合精准拦截拼接式垃圾域名
- c++怎么调用nana库开发GUI_c++ 现代风
- Windows10如何更改开机密码_Win10登录
- C++中的协变与逆变是什么?C++函数指针与返回类
- Win10怎样清理C盘爱奇艺缓存_Win10清理爱
- php转mp4怎么设置帧率_调整php生成mp4视
- Windows10无法连接到Internet_Wi
- Windows10系统怎么查看IP地址_Win10
- Win11键盘快捷键大全_Windows 11常用
- Python字符串操作教程_切片拼接与格式化详解
- Python与GPU加速技术_CUDA与Numba
- mac怎么看硬盘大小_MAC查看磁盘存储空间与文件
- Win11怎么关闭定位服务 Win11禁止应用获取
- 用lighttpd能运行php吗_lighttpd
- c++如何获取map中所有的键_C++遍历键值对提
- Bpmn 2.0的XML文件怎么画流程图
- MAC怎么解压RAR格式文件_MAC第三方解压工具
- 如何使用Golang实现函数指针_函数变量与回调示

QQ客服