Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
前端開發中,處理時間戳是一個常見的任務,原生的JavaScript日期對象在處理時間戳時存在一些痛點,開發者們就在不斷地尋找更簡便、更有效的方法來管理和操作時間戳。而Day.js,正是一個為此問題而生的解決方案。
為了解決這些問題,Day.js應運而生。Day.js是一個輕量級的JavaScript日期庫,它提供了簡單、靈活和易于使用的API,解決了前端處理時間戳的痛點。
使用Day.js非常簡單。首先,我們需要安裝:
npm install dayjs
下面是使用的例子:
// 引入
import dayjs from 'dayjs'
// 輸出當前日期和時間
const now = dayjs()
console.log(now)
// 輸出當前日期的格式化結果,例如:2023-11-14
const formattedDate = dayjs().format('YYYY-MM-DD')
console.log(formattedDate)
// 輸出當前時間的時間戳,以毫秒為單位
const timestamp = dayjs().valueOf()
console.log(timestamp)
// 輸出明天的日期和時間
const tomorrow = dayjs().add(1, 'day')
console.log(tomorrow)
// 輸出一個布爾值,表示給定日期是否在當前日期之后
const isAfter = dayjs('2023-11-15').isAfter(dayjs())
console.log(isAfter)
總結起來,Day.js是一個輕量級、簡單易用且功能強大的JavaScript日期庫,它解決了前端處理時間戳的痛點。通過提供簡潔的API和豐富的功能,Day.js使得處理日期和時間變得簡單而直觀。如果在前端開發中需要處理時間戳,不妨嘗試使用Day.js來提升開發效率和用戶體驗。
.什么是時間戳?
時間戳是字符或編碼信息的序列,用于標識何時發生特定事件,通常給出日期和時間,有時精確到幾分之一秒。 該術語源自辦公室中使用的橡皮圖章,用于在紙質文檔上用墨水在當前日期和時間上加蓋戳記,以記錄接收文檔的時間。 此類時間戳的常見用例是在紙質信件上的郵戳或考勤打卡紙上的“入”和“出”時間。在現代,該術語的使用已擴展為指附加到數字數據的數字日期和時間信息。 例如,計算機文件包含時間戳,該時間戳指示文件的最后修改時間,數碼相機將時間戳添加到所拍攝的照片中,記錄拍攝日期和時間。
對于電子商務應用,如電子合同簽署、電子文檔簽名等,都需要一個能證明合同簽署時間和文檔簽名時間的可信證明,但是由于用戶桌面電腦或手機或者服務器時間是可以隨意修改的,如果簽署合同和文檔時用這些不可信的時間,則無法保證合同的簽署時間可信。因此合同簽署和文檔簽名需要一個權威第三方來提供可信賴的且不可抵賴的時間戳服務。
2.密信時間戳服務工作原理
密信(MeSign)App提供的電子文檔數字簽名服務免費為用戶配套提供Adobe全球信任的時間戳服務,密信時間戳服務符合RFC3161國際標準和相應的國家標準。時間戳服務就是將經過時間戳服務器簽名的一個可信賴的日期和時間與特定電子數據綁定在一起,為PDF簽名應用提供可信的時間證明。 其工作原理示意圖如下左圖所示,用戶對待簽名文件生成摘要數據,并把此數據提交給時間戳服務器請求簽名,時間戳服務器對摘要數據和一個
來自權威時間源的一個日期/時間記錄進行簽名,生成時間戳簽名數據返回給簽名工具,簽名工具把此時間戳數據寫入到待簽名的PDF文件即完成時間戳簽名。密信時間戳服務時間源來自國家授時中心可靠計時系統。
用戶在使用密信App的電子簽名服務數字簽名文檔和簽署電子合同時,密信App自動調用密信時間戳服務并自動把時間戳簽名數據同文件簽名數據和LTV數據一起按照國際標準寫入到待簽名的PDF文件中完成PDF文件數字簽名。用戶無需手動配置時間戳服務網址,無需另外花錢購買時間戳服務,使用密信App完成數字簽名的時間戳服務完全免費和完全全自動。
3.使用密信App簽名的文檔的時間戳是什么樣的?
如下左圖所示,使用密信(MeSign)App簽名的文檔使用Adobe閱讀器打開后顯示的詳細時間戳信息,顯示時間戳頒發機構為 MeSign Time Stamping Signer。如下中圖所示,Adobe閱讀器顯示的簽名有效性小結信息,顯示“簽名包含嵌入的時間戳”和“安全時間戳時間已驗證”,表明此文檔采用了Adobe全球信任的時間戳服務。如下右圖所示,點擊Adobe閱讀器左邊的簽名圖標也會顯示此簽名包含嵌入的時間戳。
為了確保所有已簽名PDF文件的時間戳簽名全球信任和國密合規,密信技術獨創了雙算法證書雙時間戳簽名技術,自動對待簽名的同一個PDF文件用RSA和SM2算法計算兩份摘要(HASH)數據,并分別用RSA時間戳證書和SM2時間戳證書實現雙時間戳簽名,再把這兩個時間戳簽名數據寫入到PDF文件中,完成雙證書雙時間戳簽名,確保用戶使用Adobe閱讀器顯示RSA時間戳簽名信息和國密閱讀器顯示國密時間戳簽名信息,只有這樣,才能真正滿足Adobe全球信任和國密合規的雙標準要求,才能真正實現已簽署合同和文件的全球范圍具有法律效力。
使用Adobe閱讀器打開上面已下載的已簽名樣板文件,查看時間戳簽名信息和顯示的效果如下左圖所示。而使用支持國密算法的 密信閱讀器(內測版)打開此文件,查看時間戳簽名信息和顯示的效果如下圖右圖所示。從這個樣板文件的兩個時間戳時間對比可以看出,密信App文檔簽名時先用國密時間戳證書簽名后用RSA時間戳簽名。
密信可信時間戳免費試用搜索:密信MeSign
試用地址:https://www.mesign.com/zh-cn/tsa/index.html
例:倒計時
案例分析:
1.這個倒計時是不斷變化的,因此需要定時器來自動變化(setInterval)
2.三個黑色盒子里面分別存放時分秒
3.三個黑色盒子利用innerHTML放入計算的小時分鐘秒數
4.第一次執行也是間隔毫秒數,因此剛刷新頁面會有空白
5.最好采取封裝函數的方式,這樣可以先調用一次這個函數,防止剛開始刷新頁面有空白問題。
倒計時的算法:
1.核心算法:輸入的時間減去現在的時間就是剩余的時間,即倒計時,但是不能拿著時分秒相減,比如05分減去25分,
結果會是負數的
2.用時間戳來做,用戶輸入時間總的毫秒數減去現在時間的總的毫秒數,得到的就是剩余時間的毫秒數.
3.把剩余時間總的毫秒數轉換為天、時、分、秒、(時間戳轉換為時分秒)*/
//轉換公式如下:
/*d = parseInt(總秒數/60/60/24); //計算天數
h = parseInt(總秒數/60/60%24); //計算小時
m = parseInt(總秒數/60%24); //計算分鐘
s = parseInt(總秒數%60); //計算當前秒數*/
function conus(time){
var dqtime = +new Date(time);
var zqtime = +new Date();
var times = (dqtime - zqtime) / 1000;
var t = parseInt(times / 60 / 60 / 24);//天
t = t < 10 ? '0' + t:t;
var s = parseInt(times / 60 / 60 % 24);//時
s = s < 10 ? '0' + s:s;
var f = parseInt(times / 60 % 60);//分
f = f < 10 ? '0' + f:f;
var m = parseInt(times % 60);//秒
m = m < 10 ? '0' + m:m;
return t + '天' + s + '時' + f + '分' + m + '秒';
}
console.log(conus('2022-6-7 12:00:00'));
源碼如下
*請認真填寫需求信息,我們會在24小時內與您取得聯系。