1. 程式人生 > 其它 >在ASP中實現UNIX時間戳

在ASP中實現UNIX時間戳

  在康盛創想釋出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時間戳轉標準時間。用法在函式前面的註釋裡寫得很清楚了。