在Java中以yyyymmddhhmmss.mmm格式增加日期

时间:2012-08-23 13:02:16

标签: java date

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

例如:20120823151034.567应增加到20120823151034.568

6 个答案:

答案 0 :(得分: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));

我不会使用Calendar非常慢。

答案 1 :(得分:3)

您可以将String解析为Date个对象,并使用getTime()setTime(long l)来修改日期。然后,您可以将Date对象转换回String。要解析String并将Date对象转换回String,您可以使用SimpleDateFormat类。

答案 2 :(得分:3)

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

myCalendar.add(Calendar.MILLISECOND, 1);

将它推进一毫秒。使用DateFormat生成字符串表示。

答案 3 :(得分: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()));

答案 4 :(得分: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,您需要捕获并处理它。

答案 5 :(得分: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));