gpt4 book ai didi

java - 使用 Joda Time 将 DateTime 减去 1 小时

转载 作者:太空狗 更新时间:2023-10-29 22:49:30 25 4
gpt4 key购买 nike

我只想从 DateTime 中减去 1 小时 我试着在 Google 上查找它,我发现有一个名为 minus 的方法可以获取日期的副本并正确获取特定的持续时间这里:http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#minus(long)

但我不知道如何使用它,也无法在 Internet 上找到示例。

这是我的代码:

String string1 = (String) table_4.getValueAt(0, 1);
String string2= (String) table_4.getValueAt(0, 2);

DateTimeFormatter dtf = DateTimeFormat.forPattern("hh:mm a").withLocale(Locale.ENGLISH);
DateTime dateTime1 = dtf.parseDateTime(string1.toString());
DateTime dateTime2 = dtf.parseDateTime(string2.toString());

final String oldf = ("hh:mm a");
final String newf= ("hh.mm 0");
final String newf2= ("hh.mm a");
final String elapsedformat = ("hh.mm");

SimpleDateFormat format2 = new SimpleDateFormat(oldf);
SimpleDateFormat format2E = new SimpleDateFormat(newf);

Period timePeriod = new Period(dateTime1, dateTime2);

PeriodFormatter formatter = new PeriodFormatterBuilder()

.appendHours().appendSuffix(".")
.appendMinutes().appendSuffix("")
.toFormatter();

String elapsed = formatter.print(timePeriod);

table_4.setValueAt(elapsed,0,3);

DecimalFormat df = new DecimalFormat("00.00");
System.out.println(dateTime1);
table_4.setValueAt("", 0, 4);
table_4.setValueAt("", 0, 5);

示例数据:

    dateTime1: 08:00 AM
dateTime2: 05:00 PM

时间为 9 小时。但我只希望它是 8 小时,因为我想在我的程序中减去午休时间。

我用这个愚蠢的代码试过了:

dateTime1.minus(-1) 

我还尝试将 string1 解析为 double,这样我就可以将它减一。

double strindtoD = Integer.parseInt(string1);

我还尝试制作另一个 DateTime 并使用句点来获取两个时间的差异

String stringOneHour = ("01:00 AM");
DateTime dateTime3 = dtf.parseDateTime(stringOneHour.toString());
Period timePeriod = new Period(dateTime3, dateTime1);

最佳答案

只需使用:

dateTime.minusHours(1)

这是 documented in the API .

注意 DateTime 对象是不可变的,因此单独的操作没有效果。您需要将此方法的结果分配给一个新对象(或替换自身):

dateTime = dateTime.minusHours(1);

关于如何从两个DateTime的差值中得到一个Period,首先要经过一个Interval:

Period period = new Interval(begin, end).toPeriod();

Link到 SO 帖子解释为什么有 PeriodInterval

旁注:Joda Time 在其 API 中使用了很多间接寻址;因此,阅读Javadoc不仅需要阅读一个类的方法,还需要查看所有继承的抽象类/接口(interface)的继​​承方法列表;例如,DateTime 也是一个 ReadableInstant。不过,只要您习惯了它,就会变得轻而易举。

关于java - 使用 Joda Time 将 DateTime 减去 1 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com