- Javascript 基础教程
- Javascript - 首页
- JavaScript - 路线图
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 启用
- JavaScript - 放置
- JavaScript - 语法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 注释
- JavaScript - 变量
- JavaScript - let 语句
- JavaScript - 常量
- JavaScript - 数据类型
- JavaScript - 类型转换
- JavaScript - 严格模式
- JavaScript - 保留关键字
- JavaScript 运算符
- JavaScript - 运算符
- JavaScript - 算术运算符
- JavaScript - 比较运算符
- JavaScript - 逻辑运算符
- JavaScript - 位运算符
- JavaScript - 赋值运算符
- JavaScript - 条件运算符
- JavaScript - typeof 运算符
- JavaScript - 空值合并运算符
- JavaScript - delete 运算符
- JavaScript - 逗号运算符
- JavaScript - 分组运算符
- JavaScript - Yield 运算符
- JavaScript - 展开运算符
- JavaScript - 指数运算符
- JavaScript - 运算符优先级
- JavaScript 控制流
- JavaScript - If...Else
- JavaScript - While 循环
- JavaScript - For 循环
- JavaScript - For...in
- Javascript - For...of
- JavaScript - 循环控制
- JavaScript - Break 语句
- JavaScript - Continue 语句
- JavaScript - Switch Case
- JavaScript - 用户定义迭代器
- JavaScript 函数
- JavaScript - 函数
- JavaScript - 函数表达式
- JavaScript - 函数参数
- JavaScript - 默认参数
- JavaScript - Function() 构造函数
- JavaScript - 函数提升
- JavaScript - 自执行函数
- JavaScript - 箭头函数
- JavaScript - 函数调用
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 闭包
- JavaScript - 变量作用域
- JavaScript - 全局变量
- JavaScript - 智能函数参数
- JavaScript 对象
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - Strings
- JavaScript - Arrays
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Sets
- JavaScript - WeakSet
- JavaScript - Maps
- JavaScript - WeakMap
- JavaScript - 可迭代对象
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 标记模板
- 面向对象 JavaScript
- JavaScript - 对象
- JavaScript - 类
- JavaScript - 对象属性
- JavaScript - 对象方法
- JavaScript - 静态方法
- JavaScript - 显示对象
- JavaScript - 对象访问器
- JavaScript - 对象构造函数
- JavaScript - 原生原型
- JavaScript - ES5 对象方法
- JavaScript - 封装
- JavaScript - 继承
- JavaScript - 抽象
- JavaScript - 多态
- JavaScript - 解构赋值
- JavaScript - 对象解构
- JavaScript - 数组解构
- JavaScript - 嵌套解构
- JavaScript - 可选链
- JavaScript - 全局对象
- JavaScript - Mixins
- JavaScript - 代理
- JavaScript 版本
- JavaScript - 历史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 异步
- JavaScript - 异步
- JavaScript - 回调函数
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任务
- JavaScript - Promise 化
- JavaScript - Promise 链式调用
- JavaScript - 定时事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 属性
- JavaScript - 删除 Cookie
- JavaScript 浏览器 BOM
- JavaScript - 浏览器对象模型
- JavaScript - Window 对象
- JavaScript - Document 对象
- JavaScript - Screen 对象
- JavaScript - History 对象
- JavaScript - Navigator 对象
- JavaScript - Location 对象
- JavaScript - Console 对象
- JavaScript Web API
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 鼠标事件
- JavaScript - 键盘事件
- JavaScript - 表单事件
- JavaScript - 窗口/文档事件
- JavaScript - 事件委托
- JavaScript - 事件冒泡
- JavaScript - 事件捕获
- JavaScript - 自定义事件
- JavaScript 错误处理
- JavaScript - 错误处理
- JavaScript - try...catch
- JavaScript - 调试
- JavaScript - 自定义错误
- JavaScript - 扩展错误
- JavaScript 重要关键字
- JavaScript - this 关键字
- JavaScript - void 关键字
- JavaScript - new 关键字
- JavaScript - var 关键字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和属性
- JavaScript - DOM 文档
- JavaScript - DOM 元素
- JavaScript - DOM 属性 (Attr)
- JavaScript - DOM 表单
- JavaScript - 修改 HTML
- JavaScript - 修改 CSS
- JavaScript - DOM 动画
- JavaScript - DOM 导航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 异步迭代
- JavaScript - Atomics 对象
- JavaScript - Rest 参数
- JavaScript - 页面重定向
- JavaScript - 对话框
- JavaScript - 页面打印
- JavaScript - 验证
- JavaScript - 动画
- JavaScript - 多媒体
- JavaScript - 图像地图
- JavaScript - 浏览器
- JavaScript - JSON
- JavaScript - 多行字符串
- JavaScript - 日期格式
- JavaScript - 获取日期方法
- JavaScript - 设置日期方法
- JavaScript - 模块
- JavaScript - 动态导入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 浅拷贝
- JavaScript - 调用栈
- JavaScript - 引用类型
- JavaScript - IndexedDB
- JavaScript - 点击劫持攻击
- JavaScript - 柯里化
- JavaScript - 图形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 性能
- JavaScript - 样式指南
JavaScript - 日期格式
日期格式
JavaScript 为我们提供了各种日期格式,从基本的区域设置特定格式到复杂的自定义选项。了解不同的日期格式是 Web 开发的一个基本且必不可少的方面,无论您是构建动态 Web 应用程序、管理时间敏感数据,还是仅仅以用户友好的方式显示日期。
在这里,我们将介绍 JavaScript 的不同日期格式,并通过一些示例来实现它们,以便更好地理解它们。下表解释了 JavaScript 中使用的所有不同日期格式。
| 格式 | 示例 | 描述 |
|---|---|---|
| ISO 格式 (UTC) | 2024-01-29T12:34:56.789Z | 标准化格式,包含年份、月份、日期和时间组件。'Z' 表示时间为 UTC(协调世界时)。 |
| 区域设置日期和时间 | 1/29/2024, 12:34:56 PM | 它是基于用户系统或浏览器设置的本地化日期和时间表示形式,根据区域设置的不同,符号可能会有所不同。 |
| 自定义日期格式 | Jan 29, 2024, 12:34:56 PM PST | 自定义格式允许开发人员指定要包含的日期组件(年份、月份、日期、小时、分钟、秒)以及它们的格式。 |
| 短日期格式 | 01/29/24 | 月份、日期和年份的简短日期表示形式。顺序可能因区域设置而异。 |
| 长日期格式 | January 29, 2024 | 包含完整月份名称、日期和年份的长日期表示形式。 |
| 短时间格式 | 12:34 PM | 小时和分钟的简短时间表示形式。 |
| 长时间格式 | 12:34:56 PM | 包含小时、分钟和秒的长时间表示形式。 |
| UTC 日期格式 | Tue, 29 Jan 2024 12:34:56 GMT | 协调世界时 (UTC) 格式化的日期和时间字符串。它包括星期几和时区缩写 (GMT)。 |
| 纪元时间戳 | 1643450096789 | 自 1970 年 1 月 1 日 00:00:00 UTC 以来以毫秒为单位的时间。也称为 Unix 时间戳。用于将日期作为数字处理和比较。 |
| 相对时间 | 2 hours ago, 3 days ago | 以相对方式表示时间差的人类可读格式,例如过去日期的“ago”。用于显示自某个日期以来经过了多少时间。 |
示例
示例 1:以不同的格式显示当前日期
本示例中的 JavaScript 代码动态生成并在页面上显示各种日期格式:ISO 格式、本地日期和时间、自定义日期格式;短日期和长日期格式;短时间和长时间格式;UTC 日期格式,甚至纪元时间戳。此外,它还计算两个给定日期之间的相对时间——将当前日期与指定的先前日期进行比较,并将结果以人类可读的形式呈现。此代码举例说明了在 HTML 上下文中使用 JavaScript 格式化日期的实用技术。
<!DOCTYPE html>
<html>
<body>
<h2>All Types of Date Formats</h2>
<script>
const currentDate = new Date();
function appendFormattedDate(type, formatFunction) {
const formattedDate = formatFunction(currentDate);
const paragraph = document.createElement('p');
paragraph.innerText = `${type}: ${formattedDate}`;
document.body.appendChild(paragraph);
}
appendFormattedDate('ISO Format (UTC)', date => date.toISOString());
appendFormattedDate('Locale Date and Time', date => date.toLocaleString());
const options = {
year: 'numeric',
month: 'short',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
timeZoneName: 'short'
};
appendFormattedDate('Custom Date Format', date => date.toLocaleString('en-US', options));
appendFormattedDate('Short Date Format', date => date.toLocaleDateString());
appendFormattedDate('Long Date Format', date => date.toLocaleDateString(undefined, { year: 'numeric', month: 'long', day: 'numeric' }));
appendFormattedDate('Short Time Format', date => date.toLocaleTimeString());
appendFormattedDate('Long Time Format', date => date.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit', second: '2-digit' }));
appendFormattedDate('UTC Date Format', date => date.toUTCString());
appendFormattedDate('Epoch Timestamp', date => date.getTime());
const previousDate = new Date('2024-01-29T00:00:00Z');
const relativeTime = formatRelativeTime(previousDate, currentDate);
appendFormattedDate('Relative Time', () => relativeTime);
// Function to calculate relative time
function formatRelativeTime(previousDate, currentDate) {
const elapsedMilliseconds = currentDate - previousDate;
const seconds = Math.floor(elapsedMilliseconds / 1000);
const minutes = Math.floor(seconds / 60);
const hours = Math.floor(minutes / 60);
if (seconds < 60) {
return `${seconds} second${seconds !== 1 ? 's' : ''} ago`;
} else if (minutes < 60) {
return `${minutes} minute${minutes !== 1 ? 's' : ''} ago`;
} else if (hours < 24) {
return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
} else {
return 'More than a day ago';
}
}
</script>
</body>
</html>
示例 2:自定义日期格式
此示例使我们更深入地了解自定义日期格式,这些格式没有任何前缀格式,并且由开发人员自行选择。我们使用 Intl.DateTimeFormat 对象创建我们自己的格式(星期几、月份、日期、年份)。使用此自定义日期格式选项,我们不仅可以选择要显示的日期部分,还可以选择它们的顺序。对于某些国家/地区,如果网站以 dd/mm/yyyy 格式显示日期可能更合适,而在其他国家/地区,以 mm-dd-yyyy 格式显示日期可能更友好。
<!DOCTYPE html>
<html>
<body>
<h2>Custom Date Format Example</h2>
<script>
const currentDate = new Date();
function customDateFormat(date) {
const options = { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' };
return new Intl.DateTimeFormat('en-US', options).format(date);
}
// Function to append formatted date to the body
function appendFormattedDate(type, formatFunction) {
const formattedDate = formatFunction(currentDate);
document.body.innerHTML += `<p>${type}: ${formattedDate}</p>`;
}
// Append custom date format
appendFormattedDate('Custom Date Format', customDateFormat);
</script>
</body>
</html>
示例 3:生成未来 5 天的日期
在此示例中,JavaScript 生成未来日期,具体来说是基于当前日期的未来五天。随后,它以三种不同的方式格式化并显示这些日期;在网页上展示了 ISO 格式、特定于区域设置的排列和自定义布局。无需任何用户输入,通过 generateFutureDates 函数动态生成的日期,JavaScript 的日期处理功能得到了实际的说明。
<!DOCTYPE html>
<html>
<body>
<h2>Future Dates Generator</h2>
<div id="futureDates"></div>
<script>
function generateFutureDates() {
const today = new Date();
const futureDatesDiv = document.getElementById('futureDates');
for (let i = 1; i <= 5; i++) {
const futureDate = new Date(today.getTime() + i * 24 * 60 * 60 * 1000); // Adding 1 day for each iteration
const isoFormat = futureDate.toISOString();
const localeFormat = futureDate.toLocaleString();
const customFormatOptions = { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'short' };
const customFormat = futureDate.toLocaleString('en-US', customFormatOptions);
futureDatesDiv.innerHTML += `
<p><strong>Day ${i}:</strong></p>
<p>ISO Format (UTC): ${isoFormat}</p>
<p>Locale Date and Time: ${localeFormat}</p>
<p>Custom Format: ${customFormat}</p>
<hr>
`;
}
}
generateFutureDates();
</script>
</body>
</html>