【问题标题】:How to convert time stamp to epoch/nanoseconds in Java?如何在 Java 中将时间戳转换为纪元/纳秒?
【发布时间】:2018-03-29 21:22:06
【问题描述】:

我的Date 值为Tue Mar 27 17:57:35 PDT 2018,我正在尝试将其转换为纳米/纪元时间格式。我试过了

Date ts = data.get("timestamp").getTime()
Instant ts = data.get("timestamp").toInstant()

但这些都不起作用。我进行了广泛的搜索,似乎找不到允许我将此格式转换为纪元的示例。

【问题讨论】:

  • 如果您只有秒精度的时间,您只能将其转换为秒精度的时间戳。我的意思是,你可以将它乘以 1e9;但你并没有因此获得任何精确度。

标签: java time


【解决方案1】:

究竟什么是“纳米/纪元格式”?只是自 unix 纪元以来的纳秒数的数值吗?

如果是这种情况,您可以使用toInstant() 方法将java.util.Date 转换为Instant,然后从中获取数值:

Instant instant = date.toInstant();
long secondsSinceEpoch = instant.getEpochSecond();
int nanoSeconds = instant.getNano();

不幸的是,纳秒的总数太大而无法放入long,因此您需要输入 2 个单独的字段(如上):自纪元以来的秒数和纳秒值(9 小数位数)。

只是提醒Date 具有毫秒精度(只有 3 个小数位),因此无法获得纳秒精度。

【讨论】:

  • 确切地说,long 类型可以适应纳秒直到2262-04-11T23:47:16.854Z,所以在那之前它仍然可以安全使用。
【解决方案2】:
import java.time.Instant;

// getCurrent DateTime in Epoch till NanoSecond
public String getCurrentTimeInEpochInNanoSecond(){
   Instant instant = Instant.now();
   return "" + instant.getEpochSecond() + instant.getNano();
}

输出:

1629453692809644400

当你把 TimeStamp 转换为 HumanDate 时,就是

格林威治标准时间:2021 年 8 月 20 日星期五上午 10:01:32.809

方法的返回类型是String,因为在long会溢出。

【讨论】:

    【解决方案3】:

    请在导入java.util.concurrent.TimeUnit;后查看以下示例

    String target = "2018/03/27 17:57:35 AM";  // Your given date string
    long nanoseconds = ...;   // nanoseconds since target time that you want to convert to java.util.Date
    
    long millis = TimeUnit.MILLISECONDS.convert(nanoseconds, TimeUnit.NANOSECONDS); 
    
    DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd hh:mm aaa");
    formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date date = formatter.parse(target);
    
    long newTimeInmillis = date.getTime() + millis;
    
    Date date2 = new Date(newTimeInmillis);
    
    System.out.println(date2);
    

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2013-10-05
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      相关资源
      最近更新 更多