2009-02-12 74 views
10

我一直在努力解析出由Google書籤生成的導出文件中的書籤。該文件包含以下日期屬性:Google Bookmark導出日期格式?

ADD_DATE = 「1231721701079000」

ADD_DATE = 「1227217588219000」

這些都不是標準的UNIX風格的時間戳。有人可以在這裏指出我正確的方向嗎?如果你真的想幫助我,我會用c#解析它們。

回答

5

1231721701079000看起來很像1970年1月1日以來的時間,以微秒爲單位。

perl -wle 'print scalar gmtime(1231721701079000/1_000_000)' 
Mon Jan 12 00:55:01 2009 

我會在已知的時間製作一些書籤,並嘗試確認。

+0

@洛哈爾這是一種重言式嗎? – Schwern 2014-11-26 07:53:08

+0

不,現在是時間1970年1月1日_micro_秒 – mgkrebbs 2015-11-13 23:25:50

1

最初看着它,它看起來幾乎一樣,如果你砍掉最後6位數字你會使用online converter

1231721701 =週一,2009年1月12日0點55分01秒GMT

得到合理的Unix日期

1227217588 =週四,2008年11月20日21時46分二十八秒GMT

額外的6個數字可以格式化相關或某種擴展屬性。

如果實際上是這樣,那麼conversion of Unix Timestamps有一些示例代碼。

+0

Schwern擁有是正確的,但我給你這是我使用的代碼轉換UNIX時間戳的鏈接進行投票。 – 2009-02-12 04:25:21

+0

是的,我同意。我沒有考慮毫秒 – 2009-02-12 13:33:46

1

看看這裏的代碼示例:http://www.epochconverter.com/#code

//我的Groovy(Java)的代碼終於出來瞭如:

高清convertDate(DEF劃時代)

{

long dv = epoch/1000; // divide by 1,000 to avoid milliseconds 

String dt = new java.text.SimpleDateFormat("dd/MMM/yyyy HH:mm:ss").format(new java.util.Date (dv)); 

//獲取時代日期:

// long epoch = new java.text.Simp leDateFormat(「MM/dd/yyyy HH:mm:ss」)。parse(「01/01/1970 01:00:00」)。getTime()* 1000;

return dt; 

} //高清結束

所以Firefox的書籤日期導出爲JSON遞給我:

json.lastModified:1366313580447014

從時代轉換日期:18 /四月/ 2013 21:33:00

from:

println「convert from epo ch date:「+ convertDate(json.lastModified)

13

Chrome對文件和歷史文件中的時間戳使用修改後的Windows時間格式(」Windows epoch「)作爲其時間戳。 Windows時間格式是自1601年1月1日以來的100ns-es的數量。Chrome格式是自同一日期以來的微秒數,因此爲1/10大小。

要將Unix時間戳記轉換爲Unix時代或從Unix時代轉換,您必須轉換爲秒數並補償兩個基準日期時間(11644473600)之間的差異。

這裏是爲Unix,JavaScript的(Unix的以毫秒爲單位),Windows和Chrome的時間戳的轉換公式(你可以重新排列+ /×和 - /÷,但你會損失一點精度):

u : Unix  timestamp eg: 1378615325 
j : JavaScript timestamp eg: 1378615325177 
c : Chrome  timestamp eg: 13902597987770000 
w : Windows timestamp eg: 139025979877700000 

u = (j/1000) 
u = (c - 116444736000000) /10000000 
u = (w - 1164447360000000)/100000000 

j = (u * 1000) 
j = (c - 116444736000000) /10000 
j = (w - 1164447360000000)/100000 

c = (u * 10000000)   + 116444736000000 
c = (j * 10000)    + 116444736000000 
c = (w/10) 

w = (u * 100000000)   + 1164447360000000 
w = (j * 100000)   + 1164447360000000 
w = (c * 10) 

請注意,這些數字非常大,所以您需要使用64位數字,否則就像使用PHP的BC數學模塊一樣處理它們。

2

尤里卡!我記得在某個網站上看過ADD_DATE的含義,但直到今天,我再也找不到它了。

http://MSDN.Microsoft.com/en-us/library/aa753582(v=vs.85).aspx

提供了這種解釋,只是在標題前的「注意」,「出口和進口」:

「整個文件[ - ]格式定義,{日期}是一個十進制整數,表示自1970年1月1日午夜以來經過的秒數。「

Bef礦石的是,顯示了{日期}的例子:

<DT> < H3 FOLDED ADD_DATE = 「{日期}」 > {TITLE} </H3 > ...

<DT> < A HREF =「{url}」ADD_DATE =「{date}」LAST_VISIT =「{date}」LAST_MODIFIED =「{date}」> {TITLE} </A > ...

總有一天,我會寫VBA宏但不是今天將這些轉化爲可識別的日期!

如果其他人先寫一個轉換腳本,請分享它。謝謝。

4

JavaScript中的代碼看起來像這樣

function chromeDtToDate(st_dt) { 
    var microseconds = parseInt(st_dt, 10); 
    var millis = microseconds/1000; 
    var past = new Date(1601, 0, 1).getTime(); 
    return new Date(past + millis); 
}