3.由于其复杂的API和庞大的捆绑包大小,如果正在开发需要高性能的Web应用程序,则可能会导致显着的性能损失
1.Day.js 的功能比 Moment.js 少
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.5/dayjs.min.js" integrity="sha512-Ot7ArUEhJDU0cwoBNNnWe487kjL5wAOsIYig8llY/l0P2TUFwgsAHVmrZMHsT8NGo+HwkjTJsNErS6QqIkBxDw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>使用 Unpkg:
<script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script>要在Node.js中安装day,请运行下面的代码。
npm i dayjs使用以下代码将 Day.js 作为 Node.js 项目的依赖项:
const dayjs = require("dayjs");使用Babel或ES6:
import Dayjs from "dayjs";在本教程中,我们将使用Day.js CDN和纯JavaScript在浏览器中格式化日期和时间。
console.log(dayjs().format()) //Output: 2022-08-17T09:28:20+01:00在方括号内放置转义字符(例如 [MM,DD,YY]):
dayjs().format() // Output: 2022-08-17T09:31:09+01:00 dayjs().format('MM') // Output: 08 dayjs().format('DD') // Output: 17 dayjs().format('YY') // Output: 22 dayjs().format('MMMM') // August此外,可以定义你希望日期以哪种格式返回:
console.log(dayjs('2022-04-2').format('DD/MM/YYYY')) // Output: 02/04/2022更多格式化内容:
// 堆代码 duidaima.com dayjs().format('a') // am dayjs().format('A') // AM // @ The offset from UTC, ±HHmm dayjs().format('ZZ') // +0100 // @ The millisecond, 3-digits dayjs().format('SSS') // 912 dayjs().format('h:mm A ') // 8:28 AM dayjs().format('h:mm:ss A') // 8:30:51 AM dayjs().format('MM/DD/YYYY') // 08/19/2022 dayjs().format('M/D/YYYY') // 8/19/2022 dayjs().format('ddd, hA') // Output: "Fri, 8AM" dayjs().format('MMM D, YYYY') // Aug 19, 2022我们还可以看到一些高级的日期格式:
dayjs().format('ddd, MMM D, YYYY h:mm A '); // @ Output: Fri, Aug 19, 2022 8:23 AM dayjs().format('MMM D, YYYY h:mm A'); // Aug 19, 2022 8:24 AM dayjs().format('dddd, MMMM D YYYY, h:mm:ss A') // Output: "Friday, August 19 2022, 8:15:51 AM" dayjs().format('dddd, MMMM Do YYYY, h:mm:ss A') // output => "Friday, August 19o 2022, 8:15:51 AM"RelativeTime 插件
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.5/dayjs.min.js" integrity="sha512-Ot7ArUEhJDU0cwoBNNnWe487kjL5wAOsIYig8llY/l0P2TUFwgsAHVmrZMHsT8NGo+HwkjTJsNErS6QqIkBxDw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>其次 从cdnjs.com获取的CDN。
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.5/plugin/relativeTime.min.js"></script>相对时间插件正在为 Day.js 进行设置:
<script> dayjs.extend(window.dayjs_plugin_relativeTime) </script>Node.js和ES6导入的 RelativeTime 插件
const dayjs = require('dayjs') var relativeTime = require('dayjs/plugin/relativeTime') dayjs.extend(relativeTime)ES6 import
import Dayjs from "dayjs"; import relativeTIme from "dayjs/plugin/relativeTime"; Dayjs.extend(relativeTIme);
dayjs.extend(window.dayjs_plugin_relativeTime); var a = dayjs("2022-01-01"); console.log(dayjs("2020-01-01").from(a)) // Output: 2 years ago如果传递 true,可以获得没有后缀的值。
dayjs.extend(window.dayjs_plugin_relativeTime); var a = dayjs("2022-01-01"); console.log(dayjs("2020-01-01").from(a, true)) // Output: 2 years从现在开始计算时间
<script> dayjs.extend(window.dayjs_plugin_relativeTime); console.log(dayjs('2000-01-01').fromNow()) </script>来自未来:
<script> dayjs.extend(window.dayjs_plugin_relativeTime); console.log(dayjs('2050-01-01').fromNow()) </script> // Output: in 27 years没有后缀:您]可以使用true布尔值提供返回日期字符串。
dayjs.extend(window.dayjs_plugin_relativeTime); dayjs('2000-01-01').fromNow(true) // Output: 23 years获取当前时间
dayjs.extend(window.dayjs_plugin_relativeTime); dayjs('1980-01-01').toNow() // Output: in 43 years缺少后缀。
dayjs('2019-01-25').unix() // Output: 1548370800以毫秒为单位:
dayjs('2019-01-25').valueOf() // Output: 1548370800000根据 Day.js 文档,始终建议使用 Unix 时间戳。
dayjs('2020-02-04').daysInMonth() // Output: 29将日期作为对象返回
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.5/plugin/toObject.min.js" integrity="sha512-qWOc7v2jfO5Zg34fVOIfnpvDopsqDBilo8Onabl/MHIr5idHpg73tVRUGDMVOQs2dUEsmayiagk75Ihjn6yanA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>Node.js:
var dayjs = require('dayjs') var toObject = require('dayjs/plugin/toObject') dayjs.extend(toObject)使用 toObject() 扩展 CDN:
<script> dayjs.extend(window.dayjs_plugin_toObject); dayjs('2020-01-25').toObject() </script>输出:
{date: 25, hours: 0, milliseconds: 0, minutes: 0, months: 0, seconds: 0, years: 2023}将日期作为数组返回
var toArray = require('dayjs/plugin/toArray') dayjs.extend(toArray) dayjs.extend(window.dayjs_plugin_toArray); dayjs('2022-08-04').toArray() // Output: [2022, 7, 4, 0, 0, 0, 0]以 JSON 格式获取时间和日期
dayjs('2019-06-25').toJSON() // Output: 2019-06-24T23:00:00.000Z dayjs('1996-01-11').toJSON() // Output: 1996-01-10T23:00:00.000Z dayjs('2025-05-10').toJSON() // Output: 2025-05-09T23:00:00.000Z提供日期和时间作为字符串
dayjs('2025-03-20').toString() // Output: Wed, 19 Mar 2025 23:00:00 GMT dayjs('2010-08-08').toString() // Output: Sat, 07 Aug 2010 23:00:00 GMT dayjs('01-2005-25').toString() // @ Error output: Invalid Date解析日期
dayjs('2020-08-04T15:00:00.000Z')一个已存在的本地 JavaScript Date 对象可以用来创建一个 Day.js 对象:
let d = new Date(2021, 02, 11); let day = dayjs(); // The date returned by the first formatted date is copied in this line现在使用Parse:请参见下面的代码,以使用Parse返回当前日期
new Date(2021, 02, 11); // Alternative dayjs(new Date());
dayjs('1996-05-01').isValid(); // Output: true dayjs('dummy text').isValid(); // Output: false dayjs('2005-06-09').isValid(); // Output: true
const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const timezone = require('dayjs/plugin/timezone') // dependent on utc plugin dayjs.extend(utc) dayjs.extend(timezone)UTC插件的 CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.5/plugin/utc.min.js" integrity="sha512-z84O912dDT9nKqvpBnl1tri5IN0j/OEgMzLN1GlkpKLMscs5ZHVu+G2CYtA6dkS0YnOGi3cODt3BOPnYc8Agjg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>时区插件的 CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.5/plugin/timezone.min.js" integrity="sha512-fG1tT/Wn/ZOyH6/Djm8HQBuqvztPQdK/vBgNFLx6DQVt3yYYDPN3bXnGZT4z4kAnURzGQwAnM3CspmhLJAD/5Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>Day.js 扩展时区和 UTC 插件:
<script> dayjs.extend(window.dayjs_plugin_utc) dayjs.extend(window.dayjs_plugin_timezone); <script>事例:
dayjs.tz("2020-06-01 12:00", "America/Toronto")在控制台上输出:
let time = { $D: 18, $H: 11, $L: "en", $M: 10, $W: 1, $d: "Mon Nov 18 2013 11:55:00 GMT+0100 (West Africa Standard Time) {}", $m: 55, $ms: 0, $offset: -300, $s: 0, $x: { $localOffset: -60, $timezone: "America/Toronto" } }还可以使用 Day.js 中包含的 .toString() 方法,将时区作为普通字符串返回。
dayjs.tz("2013-11-18 11:55", "America/Toronto").toString() // Output: Mon, 18 Nov 2013 16:55:00 GMT
var customParseFormat = require('dayjs/plugin/customParseFormat') dayjs.extend(customParseFormat) dayjs('05/02/69 1:02:03 PM -05:00', 'MM/DD/YY H:mm:ss A Z') // Returns an instance containing '1969-05-02T18:02:03.000Z'CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.5/plugin/customParseFormat.min.js" integrity="sha512-FM59hRKwY7JfAluyciYEi3QahhG/wPBo6Yjv6SaPsh061nFDVSukJlpN+4Ow5zgNyuDKkP3deru35PHOEncwsw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script> dayjs.extend(window.dayjs_plugin_utc) dayjs.extend(window.dayjs_plugin_timezone); <script>估计用户时区
dayjs.extend(window.dayjs_plugin_utc) dayjs.extend(window.dayjs_plugin_timezone); dayjs.tz.guess() //Asia/Calcutta默认时区设置
var utc = require('dayjs/plugin/utc') var timezone = require('dayjs/plugin/timezone') // dependent on utc plugin dayjs.extend(utc) dayjs.extend(timezone)CDN:
dayjs.extend(window.dayjs_plugin_utc) dayjs.extend(window.dayjs_plugin_timezone); dayjs.tz.setDefault("America/New_York") // Setting the default time dayjs.tz("2019-08-05 11:00")总结