JavaScript日期时间格式化详解

JavaScript日期时间格式化详解

本文旨在帮助开发者掌握在JavaScript中格式化日期时间的技巧。通过引入date-fns库,我们可以轻松地将API返回的日期时间字符串转换为更易读的格式,例如”yyyy-MM-dd hh:mm:ss a”。本文提供详细的代码示例,并解释了如何使用format()函数进行自定义格式化,帮助开发者高效处理日期时间数据。

javascript开发中,处理日期和时间是常见的任务。从api获取的数据经常以特定的格式呈现,例如iso 8601格式(如”2023-05-12t09:14:34.742+00:00″)。为了更好地展示这些数据,我们需要将其格式化为更友好的形式,例如”2023-05-12 09:14:34 am”。

虽然JavaScript内置的Date对象提供了一些格式化方法,但它们的功能相对有限。为了更灵活地格式化日期时间,我们可以使用第三方库,例如date-fns。

使用 date-fns 进行日期时间格式化

date-fns 是一个现代化的JavaScript日期实用工具库,提供了丰富的日期时间处理函数,包括格式化、解析、计算等。它体积小巧,模块化设计,易于使用。

安装 date-fns

你可以通过 npm 或 yarn 安装 date-fns:

npm install date-fns# 或者yarn add date-fns

或者,直接使用 CDN 引入:

立即学习“Java免费学习笔记(深入)”;

  import { format } from 'https://esm.run/date-fns';  // ...

格式化日期时间

date-fns 提供了 format() 函数,可以将 Date 对象格式化为指定的字符串。

以下是一个示例,演示如何将 ISO 8601 格式的日期时间字符串格式化为 “yyyy-MM-dd hh:mm:ss a” 格式:

import { format } from 'date-fns';const isoDateString = "2023-05-12T09:14:34.742+00:00";const date = new Date(isoDateString);const formattedDate = format(date, "yyyy-MM-dd hh:mm:ss a");console.log(formattedDate); // 输出: 2023-05-12 09:14:34 AM

代码解释:

首先,我们从 date-fns 库中导入 format 函数。然后,我们定义一个 ISO 8601 格式的日期时间字符串 isoDateString。使用 new Date(isoDateString) 将字符串转换为 Date 对象。使用 format(date, “yyyy-MM-dd hh:mm:ss a”) 将 Date 对象格式化为指定的字符串格式。yyyy:四位数的年份MM:两位数的月份 (01-12)dd:两位数的日期 (01-31)hh:12小时制的小时 (01-12)mm:两位数的分钟 (00-59)ss:两位数的秒数 (00-59)a:AM/PM 指示符

应用到你的代码

现在,我们可以将上述代码应用到你的 API 响应处理逻辑中。修改你的代码如下:

fetch('http://localhost:8082/list/findbyid/'+id+'/'+productid)  .then(response => response.json())  .then(data => {    const tableBody = document.getElementById('dataInven');    data.forEach(user => {      const updateDate = new Date(user.update_date);      const formattedUpdateDate = format(updateDate, "yyyy-MM-dd hh:mm:ss a");      const row = document.createElement('tr');      row.innerHTML = `        ${user.procode}        ${user.proname}        ${user.unit}        ${user.cat_name}        ${user.quantity}        ${user.update_by}        ${formattedUpdateDate}      `;      tableBody.appendChild(row);    });  });

修改说明:

在 data.forEach() 循环中,获取每个用户的 update_date。使用 new Date(user.update_date) 将 update_date 转换为 Date 对象。使用 format(updateDate, “yyyy-MM-dd hh:mm:ss a”) 将 Date 对象格式化为指定的字符串格式,并将结果存储在 formattedUpdateDate 变量中。将 formattedUpdateDate 插入到表格的 元素中。

其他格式化选项

date-fns 提供了丰富的格式化选项,可以满足各种需求。以下是一些常用的格式化选项:

yyyy: 年 (例如: 2023)yy: 年 (例如: 23)MMMM: 月份全称 (例如: January)MMM: 月份简称 (例如: Jan)MM: 月份 (01-12)M: 月份 (1-12)dd: 日期 (01-31)d: 日期 (1-31)HH: 24小时制的小时 (00-23)hh: 12小时制的小时 (01-12)mm: 分钟 (00-59)ss: 秒 (00-59)SSS: 毫秒 (000-999)a: AM/PM 指示符EEEE: 星期几全称 (例如: Monday)EEE: 星期几简称 (例如: Mon)

你可以组合这些选项来创建自定义的日期时间格式。例如,”MMMM dd, yyyy” 将会输出 “May 12, 2023″。

注意事项

确保你的 API 返回的日期时间字符串是有效的 ISO 8601 格式或其他 Date 对象可以解析的格式。根据你的需求选择合适的格式化选项。date-fns 是一个轻量级的库,但仍然会增加你的项目体积。如果你的项目对体积非常敏感,可以考虑使用其他更小的库,或者自己编写格式化函数。

总结

通过使用 date-fns 库,我们可以轻松地在 JavaScript 中格式化日期时间。format() 函数提供了灵活的格式化选项,可以满足各种需求。在处理 API 响应中的日期时间数据时,使用 date-fns 可以提高代码的可读性和可维护性。希望本教程能够帮助你更好地处理 JavaScript 中的日期时间格式化问题。

以上就是JavaScript日期时间格式化详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1512797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月20日 07:20:52
下一篇 2025年12月20日 07:21:01

相关推荐

  • Vue中正确显示嵌套API数据的指南

    本文旨在解决vue应用中从api获取嵌套数据时,特定字段(如`advertiser_id`)无法正确显示的问题。通过详细解析数据结构,并提供使用vue的`v-for`指令遍历对象属性的解决方案,确保所有api数据都能在前端模板中准确无误地呈现。文章将包含vue实例配置、模板代码示例及相关注意事项,帮…

    2025年12月21日
    000
  • TypeScript 泛型函数中复杂对象类型推断的精确实现

    本文探讨了在 typescript 泛型函数中处理复杂嵌套对象时,`object.values` 导致类型信息丢失的问题。通过深入分析原始类型定义如何削弱类型关联,并提出一种基于映射类型(mapped types)和索引访问类型(indexed access types)的类型重构策略,精确地为泛型…

    2025年12月21日
    000
  • 解决React应用输入框卡顿:避免渲染函数中的异步setState循环

    当react应用在输入时卡顿,常见原因是组件渲染函数中直接触发异步调用并更新状态,导致无限重渲染循环。本文将深入分析此问题,并提供使用`useeffect`钩子来管理副作用的正确方法,从而避免性能瓶颈,确保应用流畅运行。核心在于将异步操作及其状态更新逻辑隔离在副作用钩子中,而非直接在组件顶层执行。 …

    2025年12月21日 好文分享
    000
  • React中渲染嵌套数据:map()的深度应用与最佳实践

    // // );// }// export default App; 在这个示例中,我们首先使用data.adSets.map()迭代顶层的adSets数组,为每个adSet生成一个 元素。接着,在每个adSet的内部,我们再次使用adSet.ads.map()来迭代其包含的ads数组,为每个ad生…

    2025年12月21日
    000
  • React中如何优雅地更新嵌套状态中的函数对象

    在React应用中,当需要更新包含函数对象的复杂嵌套状态时,直接修改或手动复制函数容易导致问题。本文将详细介绍如何使用React的函数式状态更新和ES6的展开运算符(spread operator),以不可变的方式安全、高效地更新嵌套状态中的函数,确保组件行为的正确性和一致性,尤其适用于图表回调函数…

    2025年12月21日
    000
  • JavaScript 模块化:ES6 Module 的导入导出规范

    ES6 Module通过import和export实现静态模块化,支持命名导出(可多个)和默认导出(仅一个),提升代码可维护性;命名导出用export关键字,导入时需对应名称或重命名,也可整体导入为命名空间;默认导出使用export default,导入时可自定义名称;混合导入支持同时引入默认和命名…

    2025年12月21日
    000
  • JavaScript中的正则表达式实用指南_javascript技巧

    正则表达式是JavaScript中处理字符串的高效工具,支持查找、替换、验证等操作。可通过字面量(/pattern/flags)或构造函数(new RegExp(‘pattern’, ‘flags’))创建,常用修饰符有g(全局)、i(忽略大小写)、m…

    2025年12月21日
    000
  • React组件中处理多层数组的渲染:map() 函数的嵌套应用

    在react中渲染包含多层嵌套数组的复杂数据结构时,正确使用`map()`方法至关重要。本文将详细介绍如何在react组件中优雅地实现`map()`的嵌套应用,解决数据访问错误和渲染问题,并提供示例代码和注意事项,确保高效且健壮地展示您的数据。 理解嵌套数据结构与渲染挑战 在React应用开发中,我…

    2025年12月21日 好文分享
    000
  • JavaScript性能优化与V8引擎内部原理

    掌握V8引擎机制可提升JavaScript性能:解析为AST后,经Ignition编译字节码,TurboFan对热点代码JIT优化,类型稳定和隐藏类一致利于优化,避免闭包滥用与频繁对象创建,用DevTools分析瓶颈,编写数组遍历、函数内联友好的代码以适应V8优化策略。 JavaScript性能优化…

    2025年12月21日
    000
  • 在React中更新包含函数的嵌套状态:一种高效的不可变策略

    本教程旨在解决react应用中更新深度嵌套状态时,如何高效且安全地处理包含函数的属性。通过采用函数式状态更新和不可变数据操作,我们能够避免直接修改状态,确保组件的正确渲染和数据流的清晰。文章将详细介绍如何利用展开运算符和数组映射等技术,优雅地更新复杂对象中的函数引用,从而提升代码的可维护性和健壮性。…

    2025年12月21日
    000
  • JavaScript定时器怎样使用_JavaScriptsetTimeoutsetInterval用法与案例

    JavaScript定时器通过setTimeout和setInterval实现,前者延迟执行一次,后者周期性重复执行,均返回ID供clearTimeout或clearInterval清除,常用于倒计时、轮播图等场景,需注意及时清理避免内存泄漏。 JavaScript定时器是控制代码在指定时间后或每隔…

    2025年12月21日
    000
  • React中JavaScript输入值校验与事件处理指南

    本文旨在解决react应用中处理用户输入值校验时常见的javascript错误。我们将深入探讨事件处理函数参数的正确用法、如何从输入元素中获取用户输入值、id属性的重要性,并提供一个完整的代码示例,帮助开发者构建健壮的用户交互逻辑。 在React应用开发中,经常需要获取用户在输入框中输入的值并进行校…

    2025年12月21日
    000
  • 深入理解React useEffect在DOM交互中的必要性

    在react组件中进行dom操作(如添加事件监听器)时,`useeffect`是管理副作用的关键。它确保代码仅在组件挂载时执行一次,并通过清理函数防止内存泄漏,从而避免在渲染阶段重复添加监听器导致的性能问题和资源浪费。 React中DOM操作与副作用管理 在React应用开发中,组件的渲染过程应该是…

    2025年12月21日
    000
  • JavaScript WebSocket实时通信

    WebSocket 可实现浏览器与服务器全双工通信,通过 new WebSocket(‘ws://…’) 建立连接,onopen 触发后可用 send() 发送数据、onmessage 接收消息,支持 JSON 格式,close() 关闭连接并由 onclose …

    2025年12月21日
    000
  • JS如何与SpringBootDevTools热部署配合_JS与SpringBootDevTools热部署配合的教程

    Spring Boot DevTools通过监听类路径文件变化实现后端热重启,配合前端工具如Vite或Webpack可实现JS热更新;将JS置于static目录、关闭模板缓存并配置自动构建,能提升全栈开发效率。 JavaScript与Spring Boot DevTools的热部署配合,关键在于理解…

    2025年12月21日
    000
  • js策略模式是什么?

    策略模式将算法的使用与实现分离,包含上下文、策略接口和具体策略三部分,通过统一接口在运行时动态切换算法,避免冗长条件判断,提升可维护性与扩展性,适用于表单验证、促销计算等场景。 JS策略模式是一种设计模式,它的核心思想是把算法的使用和算法的实现分离开来。一个策略模式通常包含三个部分:上下文(Cont…

    2025年12月21日
    000
  • D3 SVG 三角形多角锥形渐变实现教程

    本教程旨在解决在 d3 svg 三角形中实现复杂多角锥形渐变的难题。我们将探讨一种结合 svg foreignobject 元素嵌入 css conic-gradient,并利用 svg clippath 精确裁剪渐变区域的实用方法。这种技术能够有效克服传统线性或径向渐变在实现复杂多色角点过渡时的局…

    2025年12月21日
    000
  • 在React中实现用户输入验证与随机数比较的JavaScript脚本

    本教程深入探讨在react应用中,如何正确地通过javascript脚本检查用户输入值并与随机数进行比较。文章重点分析了`onclick`事件处理函数参数的误用、dom元素值获取的正确方法以及`id`属性的重要性,并提供了基于`document.getelementbyid`的修正方案,同时建议了r…

    2025年12月21日
    000
  • JavaScript中基于条件高效更新对象数组:不可变性与map()实践

    本文将深入探讨如何在javascript中根据特定条件更新对象数组的属性,并重点强调使用`array.prototype.map()`方法和对象扩展运算符实现不可变数据操作。我们将分析常见陷阱,并提供一个健壮、高效的解决方案,确保数据完整性和代码可维护性,同时优雅地处理null值。 在JavaScr…

    2025年12月21日
    000
  • 如何利用js脚本制作动态菜单_js动态下拉菜单脚本编写与效果展示

    使用HTML构建菜单结构,CSS设置样式并隐藏子菜单,JavaScript通过事件监听实现点击展开与收起功能,结合classList和过渡效果可提升交互体验。 实现一个动态下拉菜单并不复杂,只需要基础的 HTML、CSS 和 JavaScript 即可完成。下面详细介绍如何编写一个简洁高效的 Jav…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信