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 zone 或offset-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 ) ;
latter.toString(): 2010-12-27T11:59
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.* 类。
从哪里获得 java.time 类?
ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如Interval、YearWeek、YearQuarter 和more。