在ASP中實現UNIX時間戳
阿新 • • 發佈:2022-05-02
在康盛創想釋出UC以後,我曾經嘗試為其編寫ASP把版本的客戶端類庫,過程中發現了幾個問題,首當其衝的當然是伺服器端不支援非php平臺的介面,這個問題直接導致了我選擇另起爐灶開發自己的通用使用者中心。
但是在研究UC的過程中卻也有一些細小的收穫。這篇文章說說PHP中的時間戳。在PHP中,時間函式time()獲得的不是我們在ASP中的事件函式Now()所返回的“2008-06-04 21:19:41”這樣的形式,而是“1123495443”這樣的形式。這個記錄的是所表示的時間與1970年1月1日午夜零點之間的事件差,單位為秒,不考慮閏年等因素。
如果要編寫UC的ASP客戶端,這個問題是必然要面對的,實際上即使不為UC編寫客戶端,這個特性引入ASP還是有不少好處的。下面是具體的實現辦法:
ASP/Visual Basic程式碼
'引數:strTime:要轉換的時間;intTimeZone:該時間對應的時區 '返回值:strTime相對於1970年1月1日午夜0點經過的秒數 '示例:ToUnixTime("2008-5-23 10:51:0", +8),返回值為1211511060 Function ToUnixTime(strTime, intTimeZone) If IsEmpty(strTime) or Not IsDate(strTime) Then strTime = Now If IsEmpty(intTimeZone) or Not isNumeric(intTimeZone) Then intTimeZone = 0 ToUnixTime = DateAdd("h",-intTimeZone,strTime) ToUnixTime = DateDiff("s","1970-1-1 0:0:0", ToUnixTime) End Function '把UNIX時間戳轉換為標準時間 '引數:intTime:要轉換的UNIX時間戳;intTimeZone:該時間戳對應的時區 '返回值:intTime所代表的標準時間 '示例:FromUnixTime("1211511060", +8),返回值2008-5-23 10:51:0 Function FromUnixTime(intTime, intTimeZone) If IsEmpty(intTime) Or Not IsNumeric(intTime) Then FromUnixTime = Now() Exit Function End If If IsEmpty(intTime) Or Not IsNumeric(intTimeZone) Then intTimeZone = 0 FromUnixTime = DateAdd("s", intTime, "1970-1-1 0:0:0") FromUnixTime = DateAdd("h", intTimeZone, FromUnixTime) End Function
這兩個函式分別用於標準時間轉Unix時間戳和Unix時間戳轉標準時間。用法在函式前面的註釋裡寫得很清楚了。