问题 如何将字符串HH:MM转换为Joda持续时间?


我在表单中有一个字段来说明事件的持续时间。 比如,事件将持续15分钟。因此该字段将具有以下值:00:15 如果是持续1小时:01:00等

我怎样才能创建一个 乔达时间  持续时间 字符串“HH:MM”的对象?

查看Joda-Time主页,它提到可以分别使用ConverterManager和DurationConverter从指定对象创建Duration对象。

我的问题是,如何实现上述接口,以便通过传递“4:30”参数来创建Duration对象?

提前致谢,

卢卡斯


3910
2018-01-06 20:52


起源



答案:


我认为更好的方法是使用 PeriodFormatterBuilder 喜欢这个:

 PeriodFormatter hoursMinutes= new PeriodFormatterBuilder()
     .appendHours()
     .appendSeparator(":")
     .appendMinutes()
     .toFormatter();

然后你可以解析你的字符串 Period 对象和电话 toStandardDuration() 对那些 - 或继续与...一起工作 Period,因为这似乎更符合您的用例。


16
2018-01-06 21:00



感谢您的回答。我怎么称呼传递参数:HH:mm? - Lucas T
@Lucas:你不会。 API基于构建器设计模式,而不是模式字符串。我提出的代码相当于HH:mm模式字符串。 - Michael Borgwardt
一旦你有格式化程序,你调用formatter.parsePeriod(“00:15”)来获取句点对象 - joda-time.sourceforge.net/api-release/org/joda/time/format/... - JodaStephen
是否有任何理由在joda时间内没有使用DateTimeFormat for Period的可能性?可能会认为构建器模式对于特定目的而言过于冗长,并且可能希望使用简单且直接的DateTimeFormat来格式化给定的Period(或等效的) - Fagner Brack


答案:


我认为更好的方法是使用 PeriodFormatterBuilder 喜欢这个:

 PeriodFormatter hoursMinutes= new PeriodFormatterBuilder()
     .appendHours()
     .appendSeparator(":")
     .appendMinutes()
     .toFormatter();

然后你可以解析你的字符串 Period 对象和电话 toStandardDuration() 对那些 - 或继续与...一起工作 Period,因为这似乎更符合您的用例。


16
2018-01-06 21:00



感谢您的回答。我怎么称呼传递参数:HH:mm? - Lucas T
@Lucas:你不会。 API基于构建器设计模式,而不是模式字符串。我提出的代码相当于HH:mm模式字符串。 - Michael Borgwardt
一旦你有格式化程序,你调用formatter.parsePeriod(“00:15”)来获取句点对象 - joda-time.sourceforge.net/api-release/org/joda/time/format/... - JodaStephen
是否有任何理由在joda时间内没有使用DateTimeFormat for Period的可能性?可能会认为构建器模式对于特定目的而言过于冗长,并且可能希望使用简单且直接的DateTimeFormat来格式化给定的Period(或等效的) - Fagner Brack