无法使用LocalTime将字符串转换为Joda DefaultFormattingConversionService。
如果我以"12:00“的形式传递时间,它表示时间太短,但如果我将时间传递为”12:00“,则表示时间格式错误。
import org.joda.time.LocalTime;
import org.springframework.format.support.DefaultFormattingConversionService;
public class SpringLocalTimeFormatterTry {
public static void main(String[] args) {
DefaultFormattingConversionService service = new DefaultFormattingConversionService();
try {
System.out.println(service.convert("12:00", LocalTime.class));
}
catch (Exception e) {
System.out.println(e.getMessage());
}
try {
System.out.println(service.convert("12:00:00", LocalTime.class));
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}如何正确使用或修复?
发布于 2016-01-06 14:34:03
DefaultFormattingConversionService的普通设置使用平台默认区域设置,我从错误中假设,这些设置与我的相同,即。英语。这意味着,在一段时间内,您需要添加AM/PM指示器。这对我来说很管用:
System.out.println(service.convert("10:12 am", LocalTime.class));
>> 10:12:00.000要处理所需的时间格式,可以添加一个额外的转换器:
service.addConverter(new Converter<String, LocalTime>() {
@Override
public LocalTime convert(String source) {
return LocalTime.parse(source);
}
});然后,两个例子都通过了:
System.out.println(service.convert("12:00", LocalTime.class));
>> 12:00:00.000
System.out.println(service.convert("12:00:00", LocalTime.class));
>> 12:00:00.000您可以跳过注册默认转换器,方法是使用
new DefaultFormattingConversionService(false);最后,我假设在生产代码中,您实际上从ConversionService获得了ConversionServiceFactoryBean,因此您可以按照以下方式配置它:
@Bean
public ConversionServiceFactoryBean conversionService() {
ConversionServiceFactoryBean conversionServiceFactoryBean = new ConversionServiceFactoryBean();
Set<Converter<?, ?>> myConverters = new HashSet<>();
myConverters.add(new Converter<String, LocalTime>() {
@Override
public LocalTime convert(String source) {
return LocalTime.parse(source);
}
});
conversionServiceFactoryBean.setConverters(myConverters);
return conversionServiceFactoryBean;
}发布于 2016-01-06 13:16:48
试试这个:
DateTimeFormatter dtf = DateTimeFormat.forPattern("HH:mm:ss");
LocalTime localTime = dtf.parseLocalTime("12:00:00");
System.out.println("Time"+localTime);https://stackoverflow.com/questions/34634065
复制相似问题