热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在JavaScript中用datefns管理日期和时间[图]

在JavaScript中使用日期和时间不是一件容易的事。这就是为什么在许多app的package.json文件中可以看到像Moment.js这种类库。Moment.js是最流行的日

在Javascript中使用日期和时间不是一件容易的事。这就是为什么在许多app的package.json文件中可以看到像Moment.js这种类库。
Moment.js是最流行的日期管理类库之一,有了它web工程师可以方便地解析,格式化和计算日期。
不过近期Moment.js在官网发布了公告,正式宣布项目进入维护状态,甚至可能不再修复发现的bug。
那么问题来了:我们还有哪些其他选择呢?
Moment.js开发团队推荐了几个类库,其中一个便是date-fns。date-fns被认为是一个优秀的替代品,不只是因为它提供了同样丰富的功能,此外它遵循函数式编程规范,也是一大优势。

在Javascript中用date-fns管理日期和时间[图]

安装date-fns
你可以使用npm/Yarn安装date-fns:
格式化日期
格式化日期是像Moment.js/date-fns这类库的基础功能。这是因为Javascript没有内置的方法来解决这个问题。
date-fns使用了和Moment.js类似的字符串模式:
就这么简单。它支持许多日期格式,可以在官方文档上查阅。
增加/减少日期
现在我们可以格式化日期了,该怎么对日期应用加法和减法呢?有几个函数可以帮我们完成这个任务:
addDays
subDays
addWeeks
subWeeks
addMonths
subMonths
在下面的例子中,我们为指定日期增加1年:
日期本地化
格式化日期很容易,但是如何本地化日期呢?我们都知道访问网站的访客可能来自世界各地,我们不能要求他们都和我们的语言一样。
Javascript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,Javascript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
Javascript在1995年由Netscape公司的BrendanEich,在网景导航者浏览器上首次设计实现而成。
 

因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为Javascript。但实际上它的语法风格与Self及Scheme较为接近。书笔记网https://www.yuananren.com编程语言Javascript的标准是ECMAScript。截至2012年,所有浏览器都完整的支持ECMAScript5.1,旧版本的浏览器至少支持ECMAScript3标准。2015年6月17日,ECMA国际组织发布了ECMAScript的第六版,该版本正式名称为ECMAScript2015,但通常被称为ECMAScript6或者ES6。


对于这个需求,可以导入指定的本地化插件:
对比两个日期
对比两个日期的功能对于一个日期类库来说至关重要。date-fns提供了几个函数来做这件事。
例如,我们可以计算从1月1日到圣诞节的自然日天数以及工作日天数:
date-fns体积小巧
Moment.js被饱受诟病的一点是它庞大的体积。没办法导入单独的函数,因为它的API只允许链式调用。这意味着你需要导入整个库:
而在date-fns中,你只需要导入所需的函数即可:
这么做的好处是date-fns的依赖包比Moment.js更小,下图展示了两者的区别:
结语
随着Moment.js的落幕,date-fns正受到越来越多的关注,日常开发也比较活跃。它丰富的功能以及对于ES6的良好支持,值得你在下一个项目中尝试一下它!


推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 第六章:枚举类型与switch结构的应用分析
    第六章深入探讨了枚举类型与 `switch` 结构在编程中的应用。枚举类型(`enum`)是一种将一组相关常量组织在一起的数据类型,广泛存在于多种编程语言中。例如,在 Cocoa 框架中,处理文本对齐时常用 `NSTextAlignment` 枚举来表示不同的对齐方式。通过结合 `switch` 结构,可以更清晰、高效地实现基于枚举值的逻辑分支,提高代码的可读性和维护性。 ... [详细]
  • 如何使用ES6语法编写Webpack配置文件? ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
author-avatar
宾利Bentley乀Motors
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有