我一直在努力解析出由Google書籤生成的導出文件中的書籤。該文件包含以下日期屬性:Google Bookmark導出日期格式?
ADD_DATE = 「1231721701079000」
ADD_DATE = 「1227217588219000」
這些都不是標準的UNIX風格的時間戳。有人可以在這裏指出我正確的方向嗎?如果你真的想幫助我,我會用c#解析它們。
我一直在努力解析出由Google書籤生成的導出文件中的書籤。該文件包含以下日期屬性:Google Bookmark導出日期格式?
ADD_DATE = 「1231721701079000」
ADD_DATE = 「1227217588219000」
這些都不是標準的UNIX風格的時間戳。有人可以在這裏指出我正確的方向嗎?如果你真的想幫助我,我會用c#解析它們。
1231721701079000看起來很像1970年1月1日以來的時間,以微秒爲單位。
perl -wle 'print scalar gmtime(1231721701079000/1_000_000)'
Mon Jan 12 00:55:01 2009
我會在已知的時間製作一些書籤,並嘗試確認。
最初看着它,它看起來幾乎一樣,如果你砍掉最後6位數字你會使用online converter
1231721701 =週一,2009年1月12日0點55分01秒GMT
得到合理的Unix日期1227217588 =週四,2008年11月20日21時46分二十八秒GMT
額外的6個數字可以格式化相關或某種擴展屬性。
如果實際上是這樣,那麼conversion of Unix Timestamps有一些示例代碼。
Schwern擁有是正確的,但我給你這是我使用的代碼轉換UNIX時間戳的鏈接進行投票。 – 2009-02-12 04:25:21
是的,我同意。我沒有考慮毫秒 – 2009-02-12 13:33:46
看看這裏的代碼示例: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)
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數學模塊一樣處理它們。
尤里卡!我記得在某個網站上看過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宏但不是今天將這些轉化爲可識別的日期!
如果其他人先寫一個轉換腳本,請分享它。謝謝。
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);
}
@洛哈爾這是一種重言式嗎? – Schwern 2014-11-26 07:53:08
不,現在是時間1970年1月1日_micro_秒 – mgkrebbs 2015-11-13 23:25:50