Java 使用plusMinutes添加分钟数时出现问题
我尝试使用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=
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 ) ;