java - 如何获取A时间和B时间之间的差距?

标签 java date parsing simpledateformat

我想获取两个视频的持续时间间隔(包含毫秒)。

A:01:18:19.92,B:01:18:19.57

public String calTime(String A, String B) {

  String sFormat = "HH:mm:ss.SSS";
  SimpleDateFormat dFormat = new SimpleDateFormat(sFormat);

  try {

    Date A1 = dFormat.parse(A);
    Date A2 = dFormat.parse(B);

    //A1 = Thu Jan 01 01:18:19 KST 1970
    //A1.getTime() = -27700943
    //A2 = Thu Jan 01 01:18:19 KST 1970
    //A2.getTime() = -27701000

    System.out.println(A1.getTime() - A2.getTime());

  } catch (ParseException ex) {}

}
  1. 为什么 getTime() 的值为负数?因为我没有定义 yy-MM-dd Date 方法?

  2. 我可以使用 Date 方法获取和计算 HH:mm:ss.SSS 等持续时间吗?我不需要年、月、日等。

  3. 如何才能正常间隔两个持续时间?

最佳答案

Why appear minus front of getTime() values? Cause I didn't define yy-MM-dd the Date method?

因为日期是 1970 年 1 月 1 日午夜GMT之前。显然您处于 GMT+XX:XX 时区,因此尽管该时区的时间是 1970 年之后,但它们并不是 GMT。

Cause I didn't define yy-MM-dd the Date method?

是的,间接的。如果没有日期部分,SimpleDateFormat 假定格林尼治标准时间 1970 年 1 月 1 日午夜。

Can I get and calculation durations like HH:mm:ss.SSS using Date method?

Java 原始的 Date 对象并不是很有用。 JDK 8 添加了 java.time包含更多有用的类的包,包括 Duration .

how can I normal gap of two durations?

这就是您的代码当前正在执行的操作。它以毫秒为单位获取间隔(间隙)。这是一个正数,因为您正在执行 A - B,并且 A 晚于 B。您可以通过 Duration.ofMillis 将该数字转换为 Duration如果需要:

long interval = A1.getTime() - A2.getTime();
System.out.println("interval in ms: " + interval);
Duration d = Duration.ofMillis(interval);
System.out.println("duration: " + d);

Live Example

...虽然只是为了格式化它并没有给你带来太多好处,但我并没有立即在 java.time.format 中看到任何内容。格式化DurationTemporalAmount

关于java - 如何获取A时间和B时间之间的差距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37320244/

相关文章:

java - 从 Java 运行 Echo

Java 泛型 : Cannot cast List<SubClass> to List<SuperClass>?

javascript - 如何在 JavaScript 中合并两个日期?

java - Java 中基于月份的日期选择器

通过换行符错误使用 strtok 拆分 C 字符串

string - 如何使用 Dart 将字符串解析为数字?

java - 确定距离其他点最远的点

java - 应用程序 (.jar) 错误 - NoClassDefFoundError

python - 获取时间间隔内的所有日期

c++ - 为了在提升精神中使用 limit_d 指令,我应该包含哪些头文件?