使用plusMinutes添加分钟时出现问题

时间:2010-12-27 16:32:54

标签: java jodatime

我正在尝试使用plusMinutes为日期添加一些分钟,但它根本不添加任何内容:

以下是代码:

    String currentDate ;
    SimpleDateFormat myFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
    Date date1= null;
    DateTime dt;

    currentDate ="27/12/2010 11:29" ;

    try {
           date1= myFormat.parse(currentDate);

        } catch (ParseException ex) {

        ex.printStackTrace();

    }
    dt = new DateTime(date1);
    dt.plusMinutes(30);

4 个答案:

答案 0 :(得分:16)

Javadoc

  

返回此日期时间的副本加上指定的millis数。

所以

做类似

的事情
dt = new DateTime(date1);
dt = dt.plusMinutes(30);
System.out.println(""+dt);

答案 1 :(得分:2)

joda之美是他们的大多数类都是像Java中的String一样不可变的。更新操作不会更改原始对象。因此,plusMinutes(...)会返回 DateTime的新副本,并添加分钟,您可以将其分配给新变量,如下所示。

DateTime newDt=dt.plusMinites(30);
System.out.println(newDt);

答案 2 :(得分:2)

我想你想要dt = dt.plusMinutes(30);

plusMinutes返回计算的dateTime。它不会修改调用它的dateTime。

答案 3 :(得分:1)

TL;博士

java.time.LocalDateTime.parse( 
    "27/12/2010 11:29" , 
    DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm" )
).plusMinutes( 30 )
  

2010-12-27T11:59

提示:如果您打算将此作为时刻,时间轴上的特定点,请应用时区(ZoneId)的上下文来获取ZonedDateTime

java.time

您的问题使用了最早版本的Java中棘手的旧日期时间类,而您的问题使用了现在处于维护模式的Joda-Time项目。两者都被Java 8及更高版本中内置的 java.time 类所取代。

您的字符串输入缺少time zoneoffset-from-UTC的指示符。因此解析为java.time.LocalDateTime

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm" ) ;
LocalDateTime ldt = LocalDateTime.parse( "27/12/2010 11:29" , f ) ;
  

ldt.toString():2010-12-27T11:29

请注意,有实际时刻,时间轴上的特定点。对于大约26-27小时范围内的潜在时刻,这只是一个模糊的概念。要确定实际时刻,请将其置于时区(或偏移)的上下文中:ZonedDateTime zdt = ldt.atZone( ZoneId.of( "Pacific/Auckland" ) ) ;

添加你的会议记录。

LocalDateTime later = ldt.plusMinutes( 30 ) ;
  

later.toString():2010-12-27T11:59

关于 java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore