2016-07-07 114 views
1

問題在標題中。我正在開發一個java程序,它將把整個cookie的文件變成chrome,並將其轉化爲文本。但是,我需要時間戳記是人類可以識別的東西。java中的Webkit/chrome時間戳到人類可讀時間

什麼是將webkit時間轉換爲人類可讀時間的算法,或者是一個可以實現它的java程序的例子?

回答

1

在Web瀏覽器(如WebKik和Chrome)中使用的時間戳格式自從1601年1月1日00:00 UTC以來是64位值,以微秒爲單位。

該算法隱蔽WebKit的/鉻時間將是:

  1. 微秒差的1970年1月1日00:00 UTC和1月1日之間的的WebKit /鉻時間戳和數量之間的微秒數計算,1601 00:00 UTC
  2. 轉換微秒爲日期時間

下面是一個例子:

public LocalDateTime localDateTimeFromWebKitTimestamp(long webKitTimestamp) { 
    long epochStart = LocalDateTime 
      .from(LocalDateTime.of(1601, Month.JANUARY, 1, 0, 0)) 
      .until(LocalDateTime.of(1970, Month.JANUARY, 1, 0, 0), ChronoUnit.MICROS); 
    long delta = webKitTimestamp - epochStart; 
    return LocalDateTime.ofInstant(
      Instant.ofEpochMilli(TimeUnit.MICROSECONDS.toMillis(delta)), ZoneId.systemDefault()); 
} 
+0

好的解釋,但這並不是100%的工作,只是因爲長期看起來不能持有17位長的價值。我會盡量使用BigIntegers – Xenorosth

+0

,'long'可以保持最大值2^63 - 1 = 9,223,372,036,854,775,807,這是19位數字。如果你喜歡'BigInteger',那也沒問題。 – Wilson

+0

我不得不在這裏錯過一些東西。這不起作用,但顯然你輸入的任何「字面」都不會很長,直到你在它後面鍵入一個L。誰知道。 – Xenorosth