【问题标题】:Add H:M:S value on DateTime field在 DateTime 字段上添加 H:M:S 值
【发布时间】:2013-05-17 07:15:27
【问题描述】:

如何在 DateTime 字段上添加 HOURS:MINUTES:SECONDS 值?

在示例中,我希望在包含 dimetime 值的字段中与包含 HH:MM:SECONDS 值的字符串值相加(总和)。

报告日期为2013-01-01 10:00:00 要添加的值是:120:34:29

所以结果应该是:2013-01-06 10:34:00

我试过了:

GregorianCalendar c = new GregorianCalendar();
c.setTime(reportDate);
String toAdd='120:34:29';
c.add(Calendar.HOUR, toAdd);
java.util.Date targetFinish = c.getTime();
SystemOutPrintln(targetFinish.toString()); 

所以有问题的行是c.add(Calendar.HOUR, toAdd); 如何添加这些价值?我想在公历上做。并希望在 SysOut 中拥有新的价值; 谢谢

【问题讨论】:

  • 一个词 - Joda-time -> joda-time.sourceforge.net - 这不能回答你的问题,但你以后会感谢自己的:-)
  • 您需要将文本解析为小时、分钟和秒,并单独添加它们。您不能指望它采用未知格式的随机字符串。
  • @RonDahlgren 或者现在切换基于 JodaTime 的 Java 8 实现。 Java 7 AFAIK 有一个后端端口。

标签: java date datetime add


【解决方案1】:
GregorianCalendar c = new GregorianCalendar();
c.setTime(reportDate);

String[] toAdd = "120:34:29".split(":");

int hours = Integer.parseInt(toAdd[0]);
int mins = Integer.parseInt(toAdd[1]);
int secs = Integer.parseInt(toAdd[2]);

c.add(Calendar.SECOND, secs);
c.add(Calendar.MINUTE, mins);
c.add(Calendar.HOUR, hours);

java.util.Date targetFinish = c.getTime();

SystemOutPrintln(targetFinish.toString());

【讨论】:

  • 我认为你必须反过来做?小时 - 分钟 - 秒?或者不是?
  • 不管怎么做,结果都是一样的。
【解决方案2】:

您可以将文本解析为小时、分钟和秒,并将它们添加为 -

String[] time ="120:34:29".split(":");

c.add(Calendar.HOUR, Integer.parseInt(time[0]));
c.add(Calendar.MINUTE, Integer.parseInt(time[1]));
c.add(Calendar.SECOND, Integer.parseInt(time[2]));

【讨论】:

  • 嗨,谢谢,但我首先有两个错误: GregorianCalendar 类型中的方法 add(int, int) 不适用于参数 (int, String)
  • second: c.add(Calendar.SECOND...) 不应该是这个而不是 Second?这是我的第二个错误
  • 秒还是小写?
  • 将 Calendar.Second 更改为 Calendar.SECOND
猜你喜欢
  • 2022-01-08
  • 2011-03-19
  • 2016-07-26
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 2015-07-14
  • 2017-10-01
相关资源
最近更新 更多