国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

八個關于 new Date() 的陷阱,你需要知道一下

開發 前端
new Date() 構造函數是魔鬼 - 哦,我害怕它!這導致我在工作中犯了很多錯誤,其中一些非常奇怪。我們必須非常小心地對待它,否則我們很容易陷入它的陷阱。

new Date() 構造函數是魔鬼 - 哦,我害怕它!這導致我在工作中犯了很多錯誤,其中一些非常奇怪。

我們必須非常小心地對待它,否則我們很容易陷入它的陷阱。

1. Safari瀏覽器不支持YYYY-MM-DD形式的格式化日期

你知道嗎?“Safari”瀏覽器不支持“YYYY-MM-DD”形式的初始化時間。除它之外的很多瀏覽器,例如Chrome瀏覽器,都完美支持這種格式。

如果您編寫這樣的代碼,您的應用程序將在“Safari”瀏覽器中收到無效日期錯誤。

new Date('2023-05-28') // Invalid Date

為了正確處理這個問題,我們需要以“YYYY/MM/DD”的形式初始化時間。

new Date('2023/05/28')

2.使用0作為月份的起始索引

我們應該如何初始化日期 2023 年 5 月 28 日?

const d = new Date(2023, 4, 28)


console.log(d.getMonth()) // 4

我們將 4 作為第二個參數傳遞給 Date,但為什么不傳遞 5?

啊! 我討厭這個功能。處理月份時,日期以 0 開頭,0 表示一月,1 表示二月,等等。這個函數很糟糕,非常混亂且有錯誤。

3.關于其自動日期校正的陷阱

很難猜測下面的代碼代表的真實日期是什么。

也許是 2023 年 2 月的日期?但二月并沒有32天,很奇怪,那么到底是什么呢?

const d = new Date(2023, 1, 32)

讓我們編寫一個解析日期對象的函數。

const parseDate = (date) => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1 //Since the index of the month starts from 0, we need to add 1
  const day = date.getDate()


  return { year, month, day }
}


console.log(parseDate(new Date(2023, 1, 32)))
/*
{
  "year": 2023,
  "month": 3,
  "day": 4
}
*/

哦,新的日期(2023, 1, 32)是2023年3月4日,這太離譜了。

4. 無法輕松格式化日期?

如何將數組轉換為指定格式的字符串?很簡單,我們可以使用數組的join方法。

const array = [ '2023', '5', '28' ]


console.log(array.join('/')) // 2023/5/28
console.log(array.join('-')) // 2023-5-28
console.log(array.join(':')) // 2023:5:28

但是Date對象并沒有提供直接方便的方式來格式化日期,所以我們必須自己編寫代碼來實現。

const formatDate = (date, format = '/') => {
  return date.getFullYear() + format + (date.getMonth() + 1) + format + date.getDate()
}


formatDate(new Date(2023, 4, 28), ':') // 2023:5:28
formatDate(new Date(2023, 4, 28), '/') // 2023/5/28
formatDate(new Date(2023, 4, 28), ':') // 2023-5-28

5. 無法確定日期對象是否有效

就像上面的例子一樣,由于Date對象會自動固定日期,所以,我們無法判斷一個日期是否真的有效。

const d = new Date(2023, 15, 1) // this is a date that does not exist


formatDate(d) // 2024/4/1

6. string類型的日期無法正確解析

很多時候我們會通過傳遞日期字符串來初始化日期,因為它比 new Date(2023, 4, 28) 使用起來方便得多。

const d1 = new Date('2023-5-28')


console.log(formatDate(d1)) // 2023/5/28

這里也有陷阱,我的朋友,我們必須小心。

const d2 = new Date('5-28-2023')


console.log(formatDate(d2)) // 2023/5/28

如果您傳入這樣的日期,您將收到無效錯誤警告。

const d3 = new Date('28-5-2023') // Invalid Date
const d4 = new Date('2023-28-5') // Invalid Date

7. 無法判斷Date是否為閏年

哇,有時我們需要在工作中確定一年是否是閏年,這有點麻煩,因為 Date 對象也沒有提供執行此操作的對象方法。

const isLeapYear = (date) => {
  const year = date.getFullYear()
  return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0
}


isLeapYear(new Date(2023, 4, 28)) // false
isLeapYear(new Date(2020, 4, 28)) // true

8. 新日期(xx, xx, xx) 是一年中的哪一周?

Date對象提供了獲取年、月、日、小時、分鐘等的函數。

我們如何確定日期是一年中的第幾周?我們只能通過復雜的計算來完成這個目標。

const getWeekNumber = (date) => {
  // Creates a new Date object, set to a copy of the given date
  const newDate = new Date(date.getTime())
  // Set the time part of the date object to 0 so that only the date is considered
  newDate.setHours(0, 0, 0, 0)
  // Sets the date object to the first day of the year
  newDate.setDate(1)
  newDate.setMonth(0)
  // Gets the day of the week for the first day (0 for Sunday, 1 for Monday, etc.
  const firstDayOfWeek = newDate.getDay()
  // Calculates the difference in days from a given date to the start of the first week
  const diff = (date.getTime() - newDate.getTime()) / (24 * 60 * 60 * 1000)
  // Determines the start date of the first week according to the ISO 8601 standard
  let weekStart = 1 - firstDayOfWeek
  if (firstDayOfWeek > 4) {
    weekStart += 7 // If the first day is a Friday or later, move the first week back by one week
  }
  // Calculate week number (rounded down)
  const weekNumber = Math.floor((diff + weekStart) / 7) + 1
  return weekNumber
}


getWeekNumber(new Date(2023, 4, 28)) // 22

這是一種常見的計算,使用 ISO 8601 標準來計算日期是一年中的第幾周。

但顯然,它太復雜了,我無法理解這個功能。

寫在最后

Date對象有很多奇怪的行為,我們可以使用一些強大的庫來幫助我們。例如Moment.js、Day.js、date-fns等。

責任編輯:華軒 來源: web前端開發
相關推薦

2025-03-17 00:33:00

2025-08-04 04:00:00

2023-02-10 08:44:05

KafkaLinkedIn模式

2022-09-01 15:26:45

物聯網人工智能傳感器

2023-01-30 11:43:04

開源代碼

2014-07-31 17:13:50

編碼程序員

2022-04-24 09:00:00

滲透測試安全數字時代

2018-06-15 23:00:56

2022-07-15 14:58:26

數據分析人工智能IT

2022-12-30 11:24:21

2017-09-18 18:31:08

Hadoop

2017-02-09 14:46:25

Git事情

2012-11-01 11:11:36

Web設計Web設計

2023-12-28 17:50:00

前端開發

2023-01-06 16:43:18

產品戰略產品策略

2022-07-27 10:06:04

數字化轉型混合工作

2022-08-27 12:15:51

Linux Mint操作系統

2017-04-29 09:00:14

Linux程序進程

2019-05-22 15:10:43

2015-06-30 10:59:22

MobileWeb適配
點贊
收藏

51CTO技術棧公眾號

日韩av一区二区三区四区| 国产免费成人av| 在线观看电影av| 欧美日韩午夜精品| 2024最新电影在线免费观看| 欧美tickling挠脚心丨vk| 日韩欧美精品一区二区三区| 日韩在线资源网| 精品视频一二| 日韩美女毛茸茸| 国语自产精品视频在线看8查询8| 麻豆精品蜜桃一区二区三区| 另类人妖一区二区av| 狠狠97人人婷婷五月| 亚洲欧美日韩在线不卡| 神马久久久久| 欧美成人一区二区三区片免费| 亚洲国产尤物| 热久久免费视频精品| 红桃视频国产一区| 成人在线观看毛片| 国产精品美女www爽爽爽| 欧美孕妇孕交| 亚洲精品日韩丝袜精品| 日本午夜精品久久久| 极品校花啪啪激情久久| 99久久伊人精品| 中文在线二区| 亚洲美女性视频| 亚洲图片久久| 亚洲精品成人自拍| 中文字幕一区二区三| 免费av网站在线看| 欧美精品一区二区免费| 亚洲网站啪啪| 久久精品免费一区二区| 91久久人澡人人添人人爽欧美| 91精品影视| 成人h片在线播放免费网站| 久草在线在线精品观看| 免费人成短视频在线观看网站| 亚洲精品一区二区精华| 欧美日韩在线二区| 97超碰国产精品| 在线观看日韩精品| 99久久婷婷国产综合精品青牛牛| 免费看污久久久| 最新热久久免费视频| 国产人成网在线播放va免费| 午夜精品一区二区三区在线播放 | 在线观看亚洲成人| 福利视频亚洲| 国产区二精品视| 国产欧美精品日韩区二区麻豆天美| 视频免费一区| 日产精品99久久久久久| 成人午夜又粗又硬又大| 亚洲s色大片| 国产99久久精品一区二区 夜夜躁日日躁| 奇米综合一区二区三区精品视频| 玖草视频在线| 久久在线精品视频| 日日摸夜夜添夜夜添精品视频 | 日韩欧美亚洲国产精品字幕久久久 | 久久亚洲色图| 一本免费视频| 日韩一区二区精品视频| 久久一二三四| 欧美色视频免费| 3344国产精品免费看| 成人网页在线观看| 青春草在线免费视频| 亚洲aaaaaa| 亚洲在线观看免费| 国产成人av毛片| 无码aⅴ精品一区二区三区浪潮| 亚洲电影免费观看高清完整版在线观看 | 色在线免费视频| 136fldh精品导航福利| 韩国v欧美v亚洲v日本v| 日本在线视频观看| 91综合免费在线| 亚洲一区在线播放| 一道在线中文一区二区三区| 超碰在线97免费| 久热精品视频在线观看| 97se亚洲国产综合在线| 唐人社导航福利精品| 91制片厂免费观看| 日韩av网址在线| 狠狠色丁香九九婷婷综合五月| 欧美videos另类精品| 日本视频一区二区不卡| 日韩一区二区三区免费看| 国产一区成人| 中文字幕伦理免费在线视频| 欧美日韩精品免费观看视一区二区| 欧美日韩高清在线播放| 一区二区福利| av中文字幕在线播放| 日韩精品资源| 亚洲免费电影在线观看| 国产成a人亚洲| 国产95亚洲| 四色永久网址| 成人黄色短视频在线观看| 欧美日韩国产一区中文午夜| 亚洲在线久久| h视频在线免费观看| 一区二区三区不卡在线| 亚洲欧美日韩网| 久久综合久久99| 精品综合久久88少妇激情| 日本桃色视频| 粉嫩av四季av绯色av第一区| 在线电影国产精品| 国产中文字幕一区| 欧美一区一区| 日本h片在线看| 精品在线视频一区二区| 亚洲国产精久久久久久久| www.欧美日韩| 欧洲专线二区三区| www 日韩| 青青视频免费在线| 海角国产乱辈乱精品视频| 欧美日韩亚洲高清| 日韩在线一区二区| 欧美大片1688网站| 理论视频在线观看| 精品一区二区国产| 色吧影院999| 亚洲国产另类精品专区| 丝袜美腿亚洲一区| 精品国产亚洲一区二区三区| 中文资源在线网| 久久波多野结衣| 中文字幕日韩在线观看| 国产精品美女久久久久久2018| 99视频精品全国免费| 人人澡人人添人人爽一区二区| 每日在线更新av| 91在线直播亚洲| 精品在线观看国产| 尤物在线观看一区| 免费成人美女在线观看.| 精品国产影院| 午夜羞羞小视频在线观看| 亚洲视频在线a| 3d动漫啪啪精品一区二区免费| 亚洲人成电影在线观看天堂色| 一区二区三区在线视频观看 | 特级西西444| 日韩av免费看网站| 日韩一区二区三区免费观看| 国产午夜亚洲精品不卡| 亚洲成人直播| 88久久精品| 色帝国亚洲欧美在线| 污网站在线观看免费| 亚洲欧美99| 成人动漫网站在线观看| 国产亚洲福利一区| 一本大道久久a久久综合 | 国产黄色影视| 天堂资源在线亚洲视频| 日韩美女av在线免费观看| 日韩黄色在线免费观看| 欧美日韩在线第一页| 91色婷婷久久久久合中文| 亚洲一区在线| 精品国产不卡一区二区| 97超碰资源站在线观看| 午夜影院免费播放| 小说区视频区图片区| 91理论片午午论夜理片久久| 久久精品国产亚洲精品| 91精品国产福利在线观看| 中文字幕亚洲在| 国产在线视频一区二区| 国内精品福利| 女人丝袜激情亚洲| 91丨精品丨国产| av资源网在线播放| 国产乱理伦片a级在线观看| 久久撸在线视频| 国产人妻人伦精品| 国产中文一区二区| 国产99久久精品一区二区 夜夜躁日日躁| 日韩av综合网| 欧美色成人综合| 中文字幕亚洲区| 国产精品一区久久久久| 午夜一区二区三区不卡视频| 精品日韩免费| 午夜日韩影院| 涩涩av在线| 黑人另类精品××××性爽| 国产美女视频一区二区三区| 国产超碰在线观看|