2016-07-07 116 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