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

Java 使用plusMinutes添加分钟数时出现问题,java,jodatime,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=

我尝试使用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);

joda的优点在于,它们的大多数类都是不可变的,就像Java中的字符串一样。更新操作不会更改原始对象。因此,返回日期时间的新副本,并添加分钟数,您可以将其分配给新变量,如下所示

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

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

plusMinutes
返回计算的日期时间。它不会修改调用它的日期时间。

表示

返回此日期时间加上指定毫秒数的副本

所以

做点像

dt = new DateTime(date1);
dt = dt.plusMinutes(30);
System.out.println(""+dt);
tl;博士 2010-12-27T11:59

提示:如果您希望这是一个时刻,即时间线上的一个特定点,请应用时区上下文(
ZoneId
)来获取
zoneDateTime

java.time 您的问题使用了Java最早版本中麻烦的旧日期时间类,您的问题使用了Joda time项目,该项目现在处于维护模式。这两个类都已被java 8及更高版本中内置的java.time类所取代

字符串输入缺少或的指示符。因此,将其解析为一个函数

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

请注意,您没有实际的时刻,这不是时间线上的特定点。这只是一个关于26-27小时范围内潜在时刻的模糊概念。要确定实际时刻,请将其放在时区(或偏移量)的上下文中:
ZonedDateTime zdt=ldt.atZone(ZoneId.of(“太平洋/奥克兰”)

加上你的会议记录

LocalDateTime later = ldt.plusMinutes( 30 ) ;
稍后。toString():2010-12-27T11:59


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

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

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类

    • 对于早期的Android(@ant18,我对这个问题的3个最爱感到惊讶):)这真的是Joda愚蠢的实现。如果我在那个物体上用复数。它当然会影响对象本身!:@仅供参考,该项目目前正在进行中,团队建议迁移到类。看见现在按如下所示使用。
      DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm" ) ;
      LocalDateTime ldt = LocalDateTime.parse( "27/12/2010 11:29" , f ) ;
      
      LocalDateTime later = ldt.plusMinutes( 30 ) ;