日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TS时间戳转换

發布時間:2023/12/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TS时间戳转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在項目中時常會有時間戳需要轉化成正常時間顯示,每次調用太麻煩,寫成函數調用吧

場景一:時間轉化時間戳

/*** 時間格式 普通時間戳轉換時間* @param value 時間戳*/ export function changeTime(value: any) {return new Date(value.format('YYYY-MM-DD HH:mm:ss')).getTime(); }

使用范例

modelRef.value.startTime = changeTime(data.startTime);

場景二 時間戳轉化時間

不得不提及new Date()這個方法了

//獲得當前時間 let now = new Date();//new Date(時間戳) 格式轉化 時間戳轉化正常標準化時間 let someTime = new Date(1657521771000); //結果:Mon Jul 11 2022 14:42:51 GMT+0800 (中國標準時間)//轉化是不夠的,還需要一定格式整理,正則走起 let someTime = new Date(initTime).toLocaleString().replace(/:\d{1,2}$/, ' ')//假如正則不是很了解,反正方法千千萬,適合自己最重要 date = new Date(time).getFullYear() + '/' + Number(new Date(time).getMonth() + 1) + '/' + new Date(time).getDate();//當然在詳情頁面,一般我們就不用這么麻煩 <p class="field_value">{{ Details?.createTime | date:'yyyy-MM-dd HH:mm' }}</p>

相關其它函數參考:js中日期轉換成時間戳 - 百度文庫

場景三?一次性轉化多個時間戳

需要把后端傳來json中幾個字段的時間戳都需要轉化成正常時間顯示,同時,這些key可能不存在

/*** 時間格式 時間戳轉換時間* @param arr 鍵名數組* @param data 原來數據,若含有arr數組中的鍵名,鍵值由時間戳轉化時間*/ export function pipeTime(params: any[], data: any) {params.map(item => {if (data[item]) {data[item] = new Date(Number(data[item])).toLocaleString().replace(/:\d{1,2}$/, ' ');}return item;})return data }

使用范例:

//引用過來 import { pipeTime } from '@/utils/array'const arr = ['createTime', 'payTime'] // data--后端傳來整個json列表 element--列表其中一條數據 // arr--列表某一條中為需要轉化的時間戳的key的集合 data.forEach(element => {element = pipeTime(arr, element);});

場景四?結合組件,把正常時間轉化為時間戳

提交時間時,整理為時間戳

先舉個栗子:

?打印結果?

?一定確保此時時間格式這樣子

然后直接調用場景一的方法即可

愿意擴展可以了解:toLocaleDateString()這個方法

場景五 獲得當前時間戳或者時間的方法

// 獲得當前時間 getNowDate() {const myDate = new Date();const year = myDate.getFullYear(); // 獲取當前年const mon = myDate.getMonth() + 1; // 獲取當前月const date = myDate.getDate(); // 獲取當前日const hours = myDate.getHours(); // 獲取當前小時const minutes = myDate.getMinutes(); // 獲取當前分鐘const seconds = myDate.getSeconds(); // 獲取當前秒const now = year + '-' + mon + '-' + date + ' ' + hours + ':' + minutes + ':' + seconds;return now;}// 獲得當前時間時間戳getTimestamp() {return new Date(this.getNowDate()).getTime();}

場景六?時間戳的計算

舉個栗子

Mon Jun 13 2022 15:29:45 GMT+0800 (中國標準時間):1655105385000

Tue Jun 14 2022 15:29:45 GMT+0800 (中國標準時間):1655191785000

兩次時間差一天,那么時間戳差了86400*1000

而86400 = 24*60*60

也就是每多加一天,時間戳多加 24*60*60*1000

應用一:規定時間范圍幾天

例如在時間規定,退貨時間七日內,可選時間開始時間到往后七天,其他時間不可選擇

那么

endTime = startTime + 24 * 60 * 60 * 1000 *7 - 1;

提問:為什么要-1?

當然不能算第二天了啊!哈哈哈~

用例:預產期280天,獲取當天時間,自動計算預產日期

// 1、此處調用場景五 獲得當前時間 // 2、計算天數 item1--懷孕過了多少周 item2--懷孕零多少天 比如 懷了3周2天dataExpected(item1: any, item2: any) {let item = 280 - (Number(item1 * 7) + Number(item2));item = item * 24 * 60 * 60 * 1000 // 剩余時間const t1 = this.getTimestamp();// 獲取當前時間戳const t2 = item + t1;// 計算時間戳之和if (t2 > 0) {const i = {expectedDate: new Date(t2)}}}

應用二:規定范圍是1天、 1周或者1個月,應用于時間選擇器

getTimes() {enum DayTime { ALL = 0, DAY = 1, WEEK = 2, MONTH = 3 }if (this.btnNum === DayTime.DAY) {this.form.value.startTime = new Date(new Date().toLocaleDateString()).getTime();this.form.value.endTime = new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1;} else if (this.btnNum === DayTime.WEEK) {this.getWeek();} else if (this.btnNum === DayTime.MONTH) {this.getMounth();}}getWeek() {// 按周日為一周的最后一天計算const date = new Date();// 今天是這周的第幾天const today = date.getDay();// 上周日距離今天的天數(負數表示)let stepSunDay = -today + 1;// 如果今天是周日if (today === 0) {stepSunDay = -7;}// 周一距離今天的天數(負數表示)const stepMonday = 7 - today;const time = date.getTime();const monday = new Date(time + stepSunDay * 24 * 3600 * 1000);const sunday = new Date(time + stepMonday * 24 * 3600 * 1000);this.startTime = new Date(monday.toLocaleDateString()).getTime();this.endTime = new Date(sunday.toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1;}// 獲取本月的起始時間戳getMounth() {// 獲取當前月的第一天const start = new Date().setDate(1);// 獲取當前月的最后一天const date = new Date();const currentMonth = date.getMonth() + 1;const nextMonthFirstDay = new Date(date.getFullYear(), currentMonth, 1);const oneDay = 1000 * 60 * 60 * 24;const end = new Date(nextMonthFirstDay.getTime() - oneDay);this.startTime = new Date(new Date(start).toLocaleDateString()).getTime();this.endTime = new Date(end.toLocaleDateString()).valueOf() + 24 * 60 * 60 * 1000 - 1;}

應用場景很多,代碼是死的,人是活得,先明白自己能獲得的時間是什么格式,要變成什么格式,然后調用方法或者計算就可以了。

注意:時間的格式,有國際化的,有moment數據類型的,有正則獲得的,有時間戳的等等

總結

以上是生活随笔為你收集整理的TS时间戳转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。