4

ブラウザーの履歴を保存するファイルにある日付を通常の DateTime に変換する際に問題が発生しています。

ファイルは次の場所にあります: C:\Users[ユーザー名]\AppData\Roaming\Mozilla\Firefox\Profiles[プロファイル名]\places.sqlite

問題のテーブルは [moz_places] です。

列: [last_visit_date]


UNIX エポックと Webkit 形式 (Chrome の使用など) を使用してみましたが、どちらも期待どおりの結果をもたらしません。

これが私のUnix変換です(機能していません):

    public static DateTime FromUnixTime(long unixTime)
    {
        var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        return epoch.AddSeconds(unixTime);
    }

これは私の Webkit 変換コードです: (これらの日付でも動作しません。chromes Webkit の日付で動作します)

    public static DateTime ConvertWebkitTimeToDateTime(long ticks)
    {
        //Set up a date at the traditional starting point for unix time.
        DateTime normalDate = new DateTime(1970, 1, 1, 0, 0, 0, 0);
        //Subtract the amount of seconds from 1601 to 1970.
        long convertedTime = (ticks - 11644473600000000);
        //Devide by 1000000 to convert the remaining time to seconds.
        convertedTime = convertedTime / 1000000;
        //Add the seconds we calculated above.
        normalDate = normalDate.AddSeconds(convertedTime);
        //Finally we have the date.
        return normalDate;
    }

では、Firefox が保存しているこれらの日付はどうなるのでしょうか? 以下は、すべて今日または昨日の前後の日付の例です (2013 年 10 月 17 日頃)。

1373306583389000

1373306587125000

1373306700392000

ヘルプやドキュメントへのリンクは素晴らしいものです。ありがとうございます。

4

2 に答える 2

4

C# での解決策:

    public static DateTime FromUnixTime(long unixTime)
    {
        unixTime = unixTime / 1000000;
        var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        return epoch.AddSeconds(unixTime);
    }

CL。これは単に Unix エポックからのミリ秒値であるという点で正しかったです。

SQL での解決策:

これは、彼のソリューションをより詳細に説明するリソースです。

https://support.mozilla.org/en-US/questions/835204

于 2013-10-17T15:08:20.043 に答える