国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端常見需求整理 - 日期處理(包含moment、時(shí)間戳、日期對(duì)象)

這篇具有很好參考價(jià)值的文章主要介紹了前端常見需求整理 - 日期處理(包含moment、時(shí)間戳、日期對(duì)象)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

格式介紹

moment對(duì)象

使用 UI 框架的時(shí)間相關(guān)組件時(shí)(如 ant-design),默認(rèn)的綁定值的格式往往為這種。

/* 控制臺(tái)的打印效果 */
Moment {...}

Moment {
  _d: (...)
  _isAMomentObject: true
  _isUTC: (...)
  _isValid: (...)
  _locale: (...)
  _pf: (...)
}

字符串

部分栗子 對(duì)應(yīng)
YYYY-MM-DD HH:mm:ss 2022-04-12 20:30:00
YYYY/MM/DD HH:mm:ss 2022/04/12 20:30:00
YYYY/MM/DD hh:mm:ss 2022/04/12 08:30:00
YYYY/M/D HH:mm:ss 2022/4/12 20:30:00
YYYY/MM/DD HH:mm 2022/04/12 20:30

日期對(duì)象

通過 new Date() 獲得。

Thu Apr 14 2022 20:40:11 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)

?? 兩個(gè)日期對(duì)象間可以比較大小

?? 全文本字符串格式

moment.js庫(kù)

moment自增一天

// 自增一天
moment().add(1,'days')

// 自減一天
moment().subtract(1, 'days')

// 年月時(shí)分秒,將第二個(gè)參數(shù)替換為以下字符串
years months hours minutes seconds

// 同時(shí)自增日和月
moment().add({ days:7, months:1 }); 

moment設(shè)置為頭尾

表達(dá)式 含義
moment().startOf(‘year’) 設(shè)置為今年的1月1日的00:00:00
moment().endOf(‘year’) 設(shè)置為今年的12月31號(hào)的23:59:59
moment().startOf(‘day’); 設(shè)置為今天的00:00:00
moment().endOf(‘day’); 設(shè)置為今天的23:59:59

?? 類似的參數(shù)還有 month、quarter、week、hour、minute、second

moment轉(zhuǎn)換為字符串

import moment from 'moment';

methods: {
  moment,
  handleDemo(momentObj) {
    /* moment 轉(zhuǎn)化為 字符串,如 '2021-12-30 20:00:00' */
    const demo = moment(momentObj).format('YYYY-MM-DD HH:mm:ss')
  },
}
自定義時(shí)分秒
startTime = `${moment(start).format('YYYY-MM-DD')} 00:00:00`;
endTime = `${moment(end).format('YYYY-MM-DD')} 23:59:59`;

字符串轉(zhuǎn)換為moment

import moment from 'moment';

methods: {
  moment,
  handleDemo() {
    let demo = '2021-12-30 20:00:00'
    /* 字符串 轉(zhuǎn)化為 moment */
    const startTime = moment(demo, 'YYYY-MM-DD HH:mm:ss');
  },
}

字符串轉(zhuǎn)換為字符串

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script>

var str = '2021/11/15 11:20:00'; 
var momentObj = moment(str, 'YYYY/MM/DD HH:mm:ss'); 
momentObj.format('YYYY-MM-DD');                    // 2021-11-15
momentObj.format('HH:mm:ss');                       // 11:20:00
</script>

?? HH 代表24小時(shí)制,hh 代表12小時(shí)制

獲取當(dāng)前時(shí)間的字符串

moment().format('YYYY-MM-DD'); // 示例:2022-01-01
moment().format('HH:mm:ss');   // 示例:00:00:00

獲取昨天的字符串

假設(shè)今天的日期為 2022-1-1,將得到 2021-12-31

const today = new Date();
today.setTime(today.getTime() - 24 * 60 * 60 * 1000);  // 減上一天的日期對(duì)象
const yesterday = moment(today).format('YYYY-MM-DD');

日期轉(zhuǎn)換為moment

const today = new Date()
const momentObj = moment(new Date())

原生

新建日期對(duì)象

new Date()new Date(year, month, day, hours, minutes, seconds, milliseconds)new Date(milliseconds)new Date(date string)
  • ①:用當(dāng)前日期和時(shí)間創(chuàng)建新的日期對(duì)象

  • ②:按順序分別指定年、月、日、小時(shí)、分鐘、秒和毫秒;至少要有年和月,否則會(huì)被視作毫秒

  • ③:創(chuàng)建零時(shí)加毫秒的新日期對(duì)象

  • ④:從日期字符串創(chuàng)建一個(gè)新的日期對(duì)象

    new Date("October 13, 2014 11:13:00")
    new Date("2019-03-02 12:46:00")
    new Date("2019-3-2 12:46:00")   // 在某些瀏覽器中,不帶前導(dǎo)零的月或其會(huì)產(chǎn)生錯(cuò)誤
    new Date("2018-02-19")
    new Date("2018-02")
    new Date("2018")
    

?? 零時(shí)區(qū)為 1970 年 1 月 1 日 00:00:00 UTC

?? JavaScript 從 0 到 11 計(jì)算月份;需要注意月份的設(shè)置 和 getMonth 方法

新建日期對(duì)象-適配ios

從日期字符串創(chuàng)建一個(gè)新的日期對(duì)象時(shí),需要額外注意:

const str1 = '2022-2-12 12:00:00'
const str2 = '2022-02-12 12:00:00'
const str3 = '2022/02/12 12:00:00'

/* 結(jié)果相同 */
const result1 = new Date(str1.replace(/-/g, '/'))
const result2 = new Date(str2.replace(/-/g, '/'))
const result3 = new Date(str3.replace(/-/g, '/'))

?? ios 不能解析 YYYY-MM-DD 的格式,需要轉(zhuǎn)化為 YYYY/MM/DD

日期獲取方法

方法 描述
getDate() 獲取天(1-31)
getDay() 獲取一周的某一天的數(shù)字(0-6)
getFullYear() 獲取四位的年(yyyy)
getHours() 獲取小時(shí)(0-23)
getMilliseconds() 獲取毫秒(0-999)
getMinutes() 獲取分(0-59)
getMonth() 獲取月(0-11)
getSeconds() 獲取秒(0-59)
getTime() 獲取時(shí)間(從 1970 年 1 月 1 日至今)

注意:對(duì)于 getDay() 的返回值,星期天為 0, 星期一為 1, 以此類推。

日期設(shè)置方法

方法 描述
setDate() 以數(shù)值(1-31)設(shè)置日
setFullYear() 設(shè)置年(可選月和日)
setHours() 設(shè)置小時(shí)(0-23);必選時(shí),可選分、秒、毫秒;-1為昨天最后時(shí),24為明日首時(shí)
setMilliseconds() 設(shè)置毫秒(0-999)
setMinutes() 設(shè)置分(0-59)
setMonth() 設(shè)置月(0-11)
setSeconds() 設(shè)置秒(0-59)
setTime() 設(shè)置時(shí)間(從 1970 年 1 月 1 日至今的毫秒數(shù))

?? 對(duì)于 setHours,在 EMCAScript 標(biāo)準(zhǔn)化之前,不支持后面幾個(gè)參數(shù),也許也不支持-1等。

日期對(duì)象自增一天

const myDate = new Date()
console.log(myDate)         // 此時(shí)的日期對(duì)象
myDate.setDate(myDate.getDate() + 1)
console.log(myDate)         // 明天此時(shí)的日期對(duì)象

?? 涉及到跨月/跨年時(shí),也會(huì)自動(dòng)處理。

日期對(duì)象自增一時(shí)

const myDate = new Date()
console.log(myDate) // 此時(shí)的日期對(duì)象
myDate.setHours(myDate.getHours() + 1)
console.log(myDate) // 一小時(shí)后的日期對(duì)象

?? 涉及到跨月/跨年/跨日時(shí),也會(huì)自動(dòng)處理。

日期對(duì)象-獲取當(dāng)日零點(diǎn)

//獲取當(dāng)天零點(diǎn)的時(shí)間
const stamp1 = new Date(new Date().setHours(0, 0, 0, 0)); 

//獲取當(dāng)天23:59:59的時(shí)間
const stamp2 = new Date(new Date().setHours(0, 0, 0, 0) + 24 * 60 * 60 * 1000 - 1); 

日期對(duì)象轉(zhuǎn)化為時(shí)間戳

毫秒

const timestamp = dateObj.getTime()

日期對(duì)象轉(zhuǎn)化為字符串

導(dǎo)出格式: YYYY-MM-DD HH:mm:ss

// 日期對(duì)象轉(zhuǎn)化為 YYYY-MM-DD HH:mm:ss
dateToTime (date) {
  const Y = date.getFullYear() + '-'
  const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
  const D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' '
  const h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':'
  const m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':'
  const s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
  return Y + M + D + h + m + s
},
// 日期對(duì)象轉(zhuǎn)化為 YYYY-MM-DD HH:mm
dateToTime1 (date) {
  const Y = date.getFullYear() + '-'
  const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
  const D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' '
  const h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':'
  const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
  return Y + M + D + h + m 
},
// 日期對(duì)象轉(zhuǎn)化為 HH:mm
dateToTime2 (date) {
  const h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':'
  const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
  return h + m
},

時(shí)間戳加一天

毫秒

const Next = timestamp + 24 * 60 * 60 * 1000

時(shí)間戳轉(zhuǎn)化為字符串

導(dǎo)出格式: YYYY-MM-DD HH:mm:ss

// 時(shí)間戳轉(zhuǎn)化為 YYYY-MM-DD hh:mm:ss
timestampToTime (timestamp) {
  const date = new Date(timestamp) // 時(shí)間戳為10位需*1000,時(shí)間戳為13位的話不需乘1000
  const Y = date.getFullYear() + '-'
  const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
  const D = date.getDate() < 10 ? '0' + date.getDate() + ' ' : date.getDate() + ' '
  const h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':'
  const m = date.getMinutes() < 10 ? '0' + date.getMinutes() + ':' : date.getMinutes() + ':'
  const s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
  return Y + M + D + h + m + s
},

導(dǎo)出格式: YYYY-MM-D H:m:s

// 時(shí)間戳轉(zhuǎn)化為 YYYY-MM-DD hh:mm:ss
timestampToTime (timestamp) {
  const date = new Date(timestamp) // 時(shí)間戳為10位需*1000,時(shí)間戳為13位的話不需乘1000
  const Y = date.getFullYear() + '-'
  const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
  const D = date.getDate() + ' '
  const h = date.getHours() + ':'
  const m = date.getMinutes() + ':'
  const s = date.getSeconds()
  return Y + M + D + h + m + s
},

時(shí)間戳轉(zhuǎn)(天)時(shí)分秒

毫秒

  • 默認(rèn)返回天數(shù),返回格式 ‘1天12:05:00’

  • 默認(rèn)時(shí)長(zhǎng)小于一天時(shí),返回格式 ‘23:00:00’

  • 會(huì)將天數(shù)、時(shí)、分、秒返回,可自由拼接

/**
 * 將時(shí)長(zhǎng)轉(zhuǎn)成xx天HH:mm:ss格式
 * @param { Number } time 時(shí)長(zhǎng),單位ms
 * @param { Boolean } showDay 是否顯示【天】
 * @return 返回時(shí)間,也可以根據(jù)自己需要組裝格式,例如{ time2: xxx }
 */
export function fomrtatCountDown(time, showDay = true) {
  time = parseInt(time / 1000)
  let oneMinute = 60
  let oneHour = 60 * oneMinute
  let oneDay = 24 * oneHour
  let day = parseInt(time / oneDay)
  if (showDay) {
    day = day > 0 ? day : ''
    time = time - day * oneDay
  }

  let hour = parseInt(time / oneHour)
  hour = hour >= 10 ? hour : '0' + hour
  time = time - hour * oneHour

  let minute = parseInt(time / oneMinute)
  minute = minute >= 10 ? minute : '0' + minute

  let second = time - minute * oneMinute
  second = second >= 10 ? second : '0' + second
  return {
    time: (showDay && day ? `${day}` : '') + `${hour}:${minute}:${second}`,
    day,
    hour,
    minute,
    second
  }
}

?? 如果不需要獲取到天,即允許小時(shí)數(shù)大于23,第二參傳false即可。

更多

日期對(duì)象差轉(zhuǎn)(天)時(shí)分秒

傳入今天和明天同一時(shí)間(默認(rèn)),返回 [1, 0, 0, 0]

傳入今天和明天同一時(shí)間(補(bǔ)位),返回 [‘01’, ‘00’, ‘00’, ‘00’]

/**
 * 得到兩個(gè)時(shí)間相關(guān)的天數(shù)、小時(shí)、分鐘、秒
 * @return {Array} 返回?cái)?shù)組固定4個(gè)
 * @param {Object} startData
 * @param {Object} endDate
 * @param {Boolean} fixed_2 是否將每個(gè)單位補(bǔ)為2位
 */
const getDiffTimes = function(startData, endDate, fixed_2 = false) {
  //相差的總秒數(shù)
  let totalSeconds = parseInt((endDate - startData) / 1000)
  // 取天數(shù)后取模(余數(shù))
  let days = Math.floor(totalSeconds / (60 * 60 * 24))
  let modulo = totalSeconds % (60 * 60 * 24)
  // 取小時(shí)數(shù)后取模(余數(shù))
  let hours = Math.floor(modulo / (60 * 60))
  modulo = modulo % (60 * 60)
  // 分鐘
  let minutes = Math.floor(modulo / 60)
  // 秒(通過取模獲取)
  let seconds = modulo % 60
  if (fixed_2) {
    days = days < 10 ? '0' + days : days
    hours = hours < 10 ? '0' + hours : hours
    minutes = minutes < 10 ? '0' + minutes : minutes
    seconds = seconds < 10 ? '0' + seconds : seconds
  }
  //輸出到頁(yè)面
  //console.log(days + "天" + hours + ":" + minutes + ":" + seconds);
  return [days, hours, minutes, seconds]
}

?? 如果不需要獲取兩個(gè)日期對(duì)象間的天數(shù),即允許小時(shí)數(shù)大于23,去除去天數(shù)及其后的取模即可。

補(bǔ)充的話

在倉(cāng)庫(kù),還提供了許多前端常見需求及實(shí)現(xiàn)的歸納整理,歡迎客官看看~

如果這篇筆記能夠幫助到你,請(qǐng)幫忙在 github 上點(diǎn)亮 star,感謝!文章來源地址http://www.zghlxwxcb.cn/news/detail-703179.html

到了這里,關(guān)于前端常見需求整理 - 日期處理(包含moment、時(shí)間戳、日期對(duì)象)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • antdesginVue a-date-picker(日期時(shí)間選擇器)禁用當(dāng)前時(shí)間之前的時(shí)間,包含時(shí)分秒

    antdesginVue a-date-picker(日期時(shí)間選擇器)禁用當(dāng)前時(shí)間之前的時(shí)間,包含時(shí)分秒

    話不多說直接上效果 1、禁用當(dāng)前時(shí)間和之前的時(shí)間 2、禁用當(dāng)前時(shí)間和之后的時(shí)間

    2024年02月11日
    瀏覽(32)
  • Java:日期毫秒值和常見日期時(shí)間格式相互轉(zhuǎn)換

    本文介紹了Java中,日期毫秒值和常見日期格式相互轉(zhuǎn)換。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 代碼示例: 代碼示例: 如果想將指定時(shí)間轉(zhuǎn)換為毫秒值,相對(duì)比較麻煩,這里提供兩種方法供參考 利用Calendar.set() 利用DateFormat.parse() 本文介紹了Java中如何將毫秒

    2024年02月16日
    瀏覽(44)
  • Java 日期和時(shí)間 API:實(shí)用技巧與示例 - 輕松處理日期和時(shí)間

    Scanner 類用于獲取用戶輸入,它位于 java.util 包中。 要使用 Scanner 類,請(qǐng)執(zhí)行以下步驟: 導(dǎo)入 java.util.Scanner 包。 創(chuàng)建一個(gè) Scanner 對(duì)象,并將其初始化為 System.in 。 使用 Scanner 對(duì)象的方法讀取用戶輸入。 Scanner 類提供了各種方法來讀取不同類型的數(shù)據(jù): 方法 描述 nextBoolean()

    2024年03月09日
    瀏覽(29)
  • Java日期時(shí)間處理詳解

    在Java的世界里,處理日期和時(shí)間是常見的任務(wù)。尤其在Java 8之前, SimpleDateFormat 是處理日期和時(shí)間的主要方式。然而,Java 8引入了新的日期時(shí)間API,其中 LocalDateTime 和 DateTimeFormatter 成為了新的選擇。本文將探討這三者的區(qū)別,利弊以及它們的具體使用方法。 SimpleDateFormat 是

    2024年02月02日
    瀏覽(33)
  • 【前端】JQ實(shí)時(shí)顯示當(dāng)前日期、時(shí)間、星期
  • mysql常見時(shí)間函數(shù), 獲取日期對(duì)應(yīng)的年、月、日、星期、周、季度、時(shí)、分、秒函數(shù)、加減、日期都有

    ?獲取日期對(duì)應(yīng)的年、月、日、星期、季度、時(shí)、分、秒函數(shù)、日期為當(dāng)年的第幾天函數(shù)都有 1、NOW(),用于獲取當(dāng)前日期和時(shí)間函數(shù) select now()? 返回:2023-05-18 10:58:06 2、CURDATE(),用于獲取當(dāng)前日期,同CURRENT_DATE() select curdate()? 返回:2023-05-18 3、CURTIME(),用于獲取當(dāng)前時(shí)間,

    2024年02月15日
    瀏覽(47)
  • Python中的時(shí)間和日期處理

    在Python開發(fā)中,我們經(jīng)常需要處理日期和時(shí)間。Python提供了一些內(nèi)置模塊,如 datetime 、 time 和 calendar ,這些模塊讓我們能夠輕松地獲取、操作和格式化日期和時(shí)間。本文將介紹如何在Python中使用這些模塊進(jìn)行日期和時(shí)間的處理。 在Python中,我們可以使用 datetime 模塊的 date

    2024年02月11日
    瀏覽(19)
  • R語言 | 日期和時(shí)間的處理

    R語言 | 日期和時(shí)間的處理

    目錄 一、日期的設(shè)定與使用 1.1 as.Date()函數(shù) 1.2 weekdays()函數(shù) 1.3 months()函數(shù) 1.4 quarters()函數(shù) 1.5 Sys.localeconv()函數(shù) 1.6 Sys.Date()函數(shù) 1.7 再談seq()函數(shù) 1.8 使用不同格式表示日期 ?二、時(shí)間的設(shè)定與使用 2.1 Sys.time()函數(shù) 2.2 as.POSIXct()函數(shù) 2.3 時(shí)間也是可以做比較的 2.4? seq()函數(shù)與時(shí)間

    2024年02月02日
    瀏覽(16)
  • Vue.js常見錯(cuò)誤處理包含代碼

    語法錯(cuò)誤 錯(cuò)誤信息: Error: [vm] \\\"name\\\" is not defined 解決方法:確保組件的 data 中定義了相同的屬性。 示例代碼: 類型錯(cuò)誤 錯(cuò)誤信息: Error: [vm] \\\"name\\\" is not a function 解決方法:確保組件的 data 中定義的是一個(gè)函數(shù)。 示例代碼: 模板語法錯(cuò)誤 錯(cuò)誤信息: Error: [vm] \\\"message\\\" is not d

    2024年02月14日
    瀏覽(21)
  • 常見前端面試題整理(帶答案)

    (1)根據(jù)內(nèi)容的語義化,選擇合適的標(biāo)簽。便于開發(fā)人員閱讀和寫出更優(yōu)雅的代碼,也便于團(tuán)隊(duì)后期的開發(fā)和維護(hù); (2)在沒有CSS,或者CSS尚未加載的時(shí)候,頁(yè)面也能夠呈現(xiàn)出很好的內(nèi)容結(jié)構(gòu)、代碼結(jié)構(gòu)(如標(biāo)題和正文分開); (3)有利于搜索引擎優(yōu)化。搜索引擎依賴于

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包