当前位置:   article > 正文

JS获取/格式化日期(附JS获取昨日、今日、上周、本周、上月、本月方法)_js获取格式化时间

js获取格式化时间

JS中处理日期时间常用Date 对象,故本文将依次按照 创建Date对象 —> 获取日期时间 —> 格式化日期时间 的顺序进行讲解,且已封装好格式化日期等方法可直接使用。若有不正请多指教。

一、创建Date对象

Date对象由Date()构造函数创建,有以下四种创建方式,且创建的Date对象都是全文本字符串格式,如 Mon Feb 19 2018 06:00:00 GMT+0800 (中国标准时间) 。

1、new Date()

表示用当前日期和时间创建新的Date对象,输出结果为当前时间。

  1. new Date()
  2. // 输出结果:Wed Mar 02 2022 19:28:51 GMT+0800 (中国标准时间)

2、new Date(year, month, day, hours, minutes, seconds, milliseconds)

表示用指定日期和时间创建新的Date对象,输出结果为指定时间。且new Date里的year和month是必填的,其他参数可省略。

注:js中月份区间是从0至11,即0表示1月

  1. new Date(2022, 2, 15, 23, 29, 30, 8)
  2. // 输出结果:Fri Apr 15 2022 23:29:30 GMT+0800 (中国标准时间)
  3. new Date(2018, 11);
  4. // 输出结果:Sat Dec 01 2018 00:00:00 GMT+0800 (中国标准时间)

3、new Date(milliseconds)

表示用 零时(即1970 年 1 月 1 日 08:00:00 UTC) 加上毫秒的时间创建新的Date对象。

一天 (24小时) 是86 400 000毫秒,若用86 400 000毫秒创建Date对象,即会输出零时后面一天的日期时间,即1970年1月2日08:00:00 UTC。

  1. new Date(86400000)
  2. // 输出结果: Fri Jan 02 1970 08:00:00 GMT+0800 (中国标准时间)

4、new Date(dateString)

表示用日期字符串创建新的Date对象,日期字符串有以下格式。

  1. new Date("2022-3-15")
  2. // 输出结果: Tue Mar 15 2022 00:00:00 GMT+0800 (中国标准时间)
  3. new Date("2022-3")
  4. // 输出结果: Tue Mar 01 2022 00:00:00 GMT+0800 (中国标准时间)
  5. new Date("2022")
  6. // 输出结果: Sat Jan 01 2022 08:00:00 GMT+0800 (中国标准时间)

二、获取日期时间的方法

方法描述
getFullYear()获取四位的年(yyyy)
getMonth()获取月(0-11)
getDate()获取日(1-31)
getDay()获取周几(0-6)
getHours()获取小时(0-23)
getMinutes()获取分(0-59)
getSeconds()获取秒(0-59)
getMilliseconds()获取毫秒(0-999)
getTime()获取从零时开始的毫秒数(1970 年 1 月 1 日 8:00:00 起

三、格式化日期时间等方法

  1. // 格式化日期: yyyy-MM-dd
  2. function formatDate(date) {
  3. const year = date.getFullYear()
  4. let month = date.getMonth() + 1
  5. let day = date.getDate()
  6. if (month < 10) {
  7. month = `0${month}`
  8. }
  9. if (day < 10) {
  10. day = `0${day}`
  11. }
  12. return (`${year}-${month}-${day}`)
  13. }
  14. // 格式化日期:yyyy-MM-dd hh:mm:ss
  15. function formatDateTime(date) {
  16. const year = date.getFullYear()
  17. let month = date.getMonth() + 1
  18. let day = date.getDate()
  19. let hour = date.getHours()
  20. let minute = date.getMinutes()
  21. let second = date.getSeconds()
  22. if (month < 10) {
  23. month = `0${month}`
  24. }
  25. if (day < 10) {
  26. day = `0${day}`
  27. }
  28. hour = hour.toString().padStart(2, '0')
  29. minute = minute.toString().padStart(2, '0')
  30. second = second.toString().padStart(2, '0')
  31. return `${year}-${month}-${day} ${hour}:${minute}:${second}`
  32. }
  33. // 日期格式化为周几
  34. function formatWeek(date) {
  35. const thisDay = new Date(date).getDay()
  36. const weekDay = ['周日','周一','周二', '周三', '周四', '周五', '周六']
  37. //注意getDay()的结果区间为0至6,0表示周日
  38. return weekDay[thisDay]
  39. }
  40. // 获取今日日期: yyyy-MM-dd
  41. function getToday() {
  42. return formatDate(new Date())
  43. }
  44. // 获取昨日日期: yyyy-MM-dd
  45. function getYesterday() {
  46. const date = new Date()
  47. const year = date.getFullYear()
  48. const month = date.getMonth()
  49. const day = date.getDate()
  50. return formatDate(new Date(year,month,day-1))
  51. }
  52. // 获取本周开始和结束日期: [yyyy-MM-dd, yyyy-MM-dd]
  53. function getThisWeek() {
  54. // 1.创建Date对象
  55. const date = new Date()
  56. // 2.获取今日的年月日,及周几
  57. const year = date.getFullYear()
  58. const month = date.getMonth()
  59. const day = date.getDate()
  60. const week = date.getDay()
  61. // 3.获取本周开始日期并格式化为yyyy-MM-dd格式
  62. const thisWeekStartDate = formatDate(new Date(year,month,day-week+1))
  63. // 若本周开始日期为上月月底日期也无需担心,如new Date()中的参数为2022,3,-3,则此条语句会输出2022-03-28
  64. // 4.获取本周结束日期并格式化为yyyy-MM-dd格式
  65. const thisWeekEndDate = formatDate(new Date(year,month,day-week+7))
  66. const thisWeek = []
  67. thisWeek.push(thisWeekStartDate,thisWeekEndDate)
  68. // 5.返回结果
  69. return thisWeek
  70. }
  71. // 获取上周开始和结束日期: [yyyy-MM-dd, yyyy-MM-dd]
  72. function getLastWeek() {
  73. const date = new Date()
  74. const year = date.getFullYear()
  75. const month = date.getMonth()
  76. const day = date.getDate()
  77. const week = date.getDay()
  78. const lastWeekStartDate = formatDate(new Date(year,month,day-week-6))
  79. const lastWeekEndDate = formatDate(new Date(year,month,day-week))
  80. const lastWeek = []
  81. lastWeek.push(lastWeekStartDate,lastWeekEndDate)
  82. return lastWeek
  83. }
  84. // 获取本月开始和结束日期: [yyyy-MM-dd, yyyy-MM-dd]
  85. function getThisMonth() {
  86. const date = new Date()
  87. const year = date.getFullYear()
  88. const month = date.getMonth()
  89. const thisMonthStartDate = formatDate(new Date(year,month,1))
  90. const thisMonthEndDate = formatDate(new Date(year,month+1,0))
  91. // 下个月第0天表示本月最后一天
  92. const thisMonth = []
  93. thisMonth.push(thisMonthStartDate,thisMonthEndDate)
  94. return thisMonth
  95. }
  96. // 获取上月日期
  97. function getLastMonth() {
  98. const date = new Date()
  99. const year = date.getFullYear()
  100. const month = date.getMonth()
  101. const lastMonthStartDate = formatDate(new Date(year,month-1,1))
  102. const lastMonthEndDate = formatDate(new Date(year,month,0))
  103. //本月第0天表示上个月最后一天
  104. const lastMonth = []
  105. lastMonth.push(lastMonthStartDate,lastMonthEndDate)
  106. return lastMonth
  107. }
  108. module.exports = {
  109. formatDate,
  110. formatDateTime,
  111. formatWeek,
  112. getToday,
  113. getYesterday,
  114. getThisWeek,
  115. getLastWeek,
  116. getThisMonth,
  117. getLastMonth,
  118. }

 举个栗子:

输出结果:

四、参考文档

JavaScript 日期

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/313673
推荐阅读
相关标签
  

闽ICP备14008679号