如何将IE Cookie时间戳读取为DateTime?

时间:2011-07-22 14:38:39

标签: c# internet-explorer datetime cookies datetime-format

我试图使用C#

读取IE cookie文件

我很困惑如何阅读文件中的日期时间。

他们将日期时间分为2行,如下所示

481435648

30298937

1100239232

30151908

我已尝试将所有方法转换为可读日期时间,但我失败了。我读过有关FileTime,纳秒和刻度的文章,但这些都没有让我走上正确的道路。

2 个答案:

答案 0 :(得分:1)

根据this post,只有一个字段用于到期日期(第二个字段可能是cookie值?)并且要阅读它,您可以使用

之类的内容<击>
DateTime expires = new DateTime(1970, 1,1).AddSeconds(secondsFromCookie);
Console.WriteLine(expires);

<击>

以上内容仅适用于netscape cookie文件格式。 对于IE使用

        int eLow = 481435648;
        int eHigh = 30298937;
        double seconds = 1e-7*(eHigh*Math.Pow(2, 32) + eLow) - 11644473600;
        DateTime expires = new DateTime(1970, 1, 1).AddSeconds(seconds);

Source of the formula

答案 1 :(得分:0)

我最终得到了这个:

long leastSignificant = 481435648;
long mostSignificant = 30298937;
var fileTime = (mostSignificant << 32) + leastSignificant;

DateTime cookieTime = DateTime.FromFileTimeUtc(fileTime);