当前位置: 首页 > 知识库问答 >
问题:

使用Joda时间减去1小时到日期时间

钦侯林
2023-03-14

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

但我不知道如何使用它,我也找不到一个例子在互联网上。

下面是我的代码:

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
dateTime1.minus(-1) 

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

double strindtoD = Integer.parseInt(string1);

我还尝试创建另一个datetime,并使用period来获取两个时间的差值

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

共有1个答案

白博易
2023-03-14

只需使用:

dateTime.minusHours(1)

这在API中有记录。

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

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

附带说明:Joda Time在其API中使用了大量的间接;因此,读取Javadoc不仅需要读取一个类的方法,还需要查看来自所有继承的抽象类/接口的继承方法列表;例如,datetime也是readableinstant。不过,你习惯了,这是轻而易举的事。

 类似资料:
  • 我将Datagrip用于PostgreSQL。我有一个带有时间戳格式的日期字段的表。我希望能够: 应用数学运算符减去1天 根据当前-130天的时间窗口对其进行筛选 不显示邮票的HH/MM/SS部分(2016-10-31) 当前开始查询: 第1行的子句导致: [42883]错误:运算符不存在:没有时区的时间戳-整数提示:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。职位:69 子

  • 我正在为Postgresql使用Datagrip。我有一个带有时间戳格式的日期字段的表(例如:2016-11-01 00:00:00)。我希望能够: 应用数学运算符减去1天 当前开始查询: 第1行的子句导致: [42883]错误:运算符不存在:没有时区的时间戳-整数提示:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。职位:69 子句产生了类似的消息: [42883]错误:运算符

  • 问题内容: 我得到一个datetime字段,当前在查询中为: 我想做的是从该日期减去3个小时(格林尼治标准时间问题),但是我无法在PHP中执行此操作,因为PHP仅知道日期部分,而不是时间。 问题答案: MySQL具有: 但是尝试解决潜在的时区问题会更好吗?

  • 本文向大家介绍向MYSQL中已插入的日期时间记录插入当前时间减去1小时,包括了向MYSQL中已插入的日期时间记录插入当前时间减去1小时的使用技巧和注意事项,需要的朋友参考一下 要减去日期,请使用MySQL DATE_SUB()。让我们首先创建一个- 使用insert在表中插入一些记录- 使用选择显示表中的所有记录- 这将产生以下输出- 以下是插入当前时间减去1小时的查询。我们将在这里更新- 当前日

  • 问题内容: 我想比较两个日期,但是我遇到了麻烦。从一个对象创建一个日期,然后手动制作另一个日期。以下代码是一个示例: 但是测试结果。我猜是因为时间的缘故。如何检查这两个日期是否相等(我的意思是年,月,日相同)? 问题答案: 要么

  • 问题内容: 我一直在寻找答案已有几个小时,但找不到。 我正在写一个简单的。用户设置他们的工作开始和结束时间。例如,某人的工作时间是从8:00到16:00。我该如何减去这个时间来查看此人已经工作了多长时间了? 我正在尝试,但没有成功… 问题答案: 以下是更好的方法: 那会给你带来时间上的差异。