2012-07-02 89 views
0

我正在使用郵件列表程序,它將日期插入到「已編碼」的Web鏈接中,以便用戶不能更改或編輯。將函數轉換爲經典ASP

格式描述如下:

一個八個字符的字符串,AABBCCDD,其中:

  • 年份= 1980 + HexToInt(BB)/3
  • 月= HexToInt(CC)/7 - 21
  • 日= HexToInt(DD)/7 - 5

還有一個校驗和包括爲避免不經意修飾:

AA = IntToHex(Year + Month + Day mod 200)

例如2660BDAF將引用20 June, 2012


你能幫我下轉換成傳統的ASP:

CodedDateStr = Request.querystring("Exp") 
AYear = 1980 + HexToInt(CodedDateStr[3] + CodedDateStr[4])/3 
AMonth = HexToInt(CodedDateStr[5] + CodedDateStr[6])/7 - 21 
ADay = HexToInt(CodedDateStr[7] + CodedDateStr[8])/7 - 5 
ACheckSum = AYear + AMonth + ADay mod 200 

if ACheckSum <> HexToInt(CodedDateStr[1] + CodedDateStr[2]) then 
    ValidDate = 0 
else 
    ValidDate = 1 
end if 

AExpiryDate = EncodeDate(ADay, AMonth, AYear) 

if Date() > AExpiryDate then 
    ExpiredOffer = 1 
else 
    ExpiredOffer = 0 
end if 

.... 

它看起來像HexToInt相當於是clng("&h" & hexnumber)

我不知道EncodeDate,我希望它不像CDate(AMonth + "/" + ADay + "/" + AYear)

+0

mhh這是經典的asp? – ulluoink

+0

歡迎來到Stack Overflow。如果您專注於轉換過程中遇到的特定問題,您將有更好的機會獲得答案。爲此,函數HexToInt和EncodeDate應該做什麼? (您應該使用標記下方的「編輯」鏈接編輯您的問題 –

+0

對不起,HexToInt應將諸如「FF」的字符串轉換爲小數,即255。EncodeDate應將日,月和年轉換爲日期值(用於比較ASP的Date()函數) – Xaz

回答

1

CLng("&h" & hexnumber)看起來像是一個很好的HexToInt方法。

對於EncodeDate,請查看DateSerial函數,該函數需要年份,月份和日期,並返回Date值。

+0

謝謝Cheran,我會試試看... – Xaz