我正在使用邮件列表程序,该程序将日期插入到#34;编码的#34;所以用户无法对其进行更改或编辑。
格式描述如下:
八个字符的字符串
AABBCCDD,
,其中:
- 年=
1980 + HexToInt(BB) / 3
- 月=
HexToInt(CC) / 7 - 21
- 日=
HexToInt(DD) / 7 - 5
还包括校验和以避免随意修改:
AA = IntToHex(Year + Month + Day mod 200)
例如
2660BDAF
会引用20 June, 2012
。
您能帮助我将以下内容转换为Classic 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 :(得分:1)
CLng("&h" & hexnumber)
看起来是HexToInt的好方法。
对于EncodeDate,请查看DateSerial
函数,该函数需要一年,一个月和一天,并返回日期值。