我希望在每次迭代中以yyyymmddhhmmss.mmm格式增加任何给定日期的毫秒数。这里的mmm代表毫秒。我想在Java 1.5中执行此操作。
例如:20120823151034.567应增加到20120823151034.568
答案 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));