0

我正在使用一个邮件列表程序,它将日期插入到“编码”的网络链接中,因此用户无法更改或编辑它。

格式描述如下:

一个八字符的字符串,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)

4

1 回答 1

1

CLng("&h" & hexnumber)看起来是 HexToInt 的好方法。

对于 EncodeDate,查看DateSerial函数,它接受年、月和日,并返回一个 Date 值。

于 2012-07-03T05:07:20.203 回答