0

我想在每次迭代中以 yyyymmddhhmmss.mmm 格式增加任何给定日期的毫秒数。mmm 这里代表毫秒。我想在 Java 1.5 中执行这个操作。

例如:20120823151034.567 应该递增到 20120823151034.568

4

6 回答 6

4

您可以使用long毫秒,这使得递增变得微不足道。

final String input = "20120823151034.567";
final DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss.SSS");

Date d = df.parse(input);
d.setTime(d.getTime()+1);
System.out.println(df.format(d));

我不会使用日历,因为它非常慢。

于 2012-08-23T13:13:50.287 回答
3

您可以解析StringDate对象并使用getTime()setTime(long l)修改日期。然后您可以将Date对象转换回String. 对于解析对象String并将其转换DateString您可以使用SimpleDateFormat类。

于 2012-08-23T13:03:47.427 回答
3

用于此操作的最佳类是Calendar. 您将其设置为所需的日期,然后使用

myCalendar.add(Calendar.MILLISECOND, 1);

将其提前一毫秒。用于DateFormat生成字符串表示。

于 2012-08-23T13:07:28.300 回答
1

这给了你你想要的。它将跨越任何日/月/年边界,以及处理夏令时的开始和结束。

  final String input = "20120823151034.567";
  final DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss.SSS");
  final Calendar c = Calendar.getInstance();
  c.setTime(df.parse(input));
  c.add(Calendar.MILLISECOND, 1);
  System.out.println(df.format(c.getTime()));
于 2012-08-23T13:08:02.697 回答
1

您可以为此使用日历类和日期类......

日期类:

final String dateStr = "20120823151034.567";
final DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SSS");

Date date = format.parse(input);
date.setTime(date.getTime()+1);
System.out.println(format.format(date));

日历类:

final String dateStr = "20120823151034.567";
final DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SSS");

Calendar c = Calendar.getInstance();
c.setTime(format.parse(dateStr ));
c.add(Calendar.MILLISECOND,1);
System.out.println(format.format(c.getTime()));

在这两种情况下,format.parse() 都有可能抛出 ParseException,您需要捕获和处理它。

于 2012-08-23T13:47:26.890 回答
0

不使用日历的替代方案(尽管日历很好)

 final String input = "20120814120000.111";
 final DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss.SSS");

 Date date = new format.parse(input);
 long time = date.getTime();

 Date incrementedDate = new Date(time + 1);
 System.out.println(format.format(date));
于 2012-08-23T13:12:11.340 回答