3

我正在制作一个读取字幕(.srt)文件的基本 Java 程序,我想将每次都存储为 Date 对象。我真的只需要跟踪小时、分钟、秒和毫秒(到 3 位数)。我想我可以用这个来存储它:

String start = "00:01:01,604";
DateFormat sdf = new SimpleDateFormat("hh:mm:ss,SSS");
Date startDate = sdf.parse(start);

为了检索,我可以这样做:

return String.format("\nStart: %d:%d:%dText: %s\n", startDate.getHours(),startDate.getMinutes(), startDate.getSeconds(), text);

我正在寻找类似于 getMilliseconds 的东西(如果它存在的话)。非常感谢!

4

4 回答 4

5

你处理的不是约会!不要使用Date类来处理它!日期有一些你不关心的奇怪的额外规则,很容易让你绊倒(想想闰年、闰秒和时区)。

你应该要么

  • 使用 along来保存毫秒并自行处理计算(这并不难,您没有实现日历)
  • 使用现有的持续时间类,例如来自 Joda Time 的类。
于 2013-05-27T17:10:03.930 回答
3

在 Java 中获取部分日期(小时、分钟等)的推荐方法现在使用Calendar.get(Calendar.MILISECONDS),请参阅javadocs。如果您的代码如下所示:

Date startDate = sdf.parse(start);
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
int milliseconds = calendar.get(Calendar.MILISECONDS);

PS请注意,关于javadocs Date.getHours() ,Date.getSeconds()等方法目前无论如何都被弃用了。不要使用它们:)。

于 2013-05-27T17:03:59.223 回答
1

只需调用date.getTime()并获得毫秒。

于 2013-05-27T17:02:22.617 回答
1

您始终可以使用 Date.getTime() 以毫秒为单位获取价值。它将返回一个长格式的值

于 2015-01-07T12:06:18.023 回答