Tah*_*qvi 5 java optimization datetime exception jodatime
以下是基于格式字符串将字符串转换为Joda datetime对象的代码.
public Datetime ConvertDateTime(String dateStr) {
List<DateTimeFormatter> FORMATTERS =
Arrays.asList(
DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ss.SSS a"),
DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS"),
DateTimeFormat.forPattern("MM-dd-yyyy hh:mm:ss.SSS a"),
DateTimeFormat.forPattern("MM dd yyyy hh:mm:ss.SSS a"),
DateTimeFormat.forPattern("MM-dd-yyyy hh.mm.ss.SSS a"));
if (dateStr != null) {
for (DateTimeFormatter formatter : FORMATTERS) {
try {
DateTime dt = formatter.parseDateTime(dateStr);
return dt;
} catch (IllegalArgumentException e) {
// Go on to the next format
}
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
这段代码为我提供了理想的结果,但是使用异常作为控制流并不是一个好的设计.请优化代码.
使用 Joda ,你可以尝试这样做
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.DateTimeFormatterBuilder;
import org.joda.time.format.DateTimeParser;
public class JODATester {
public static void main(String[] args) {
DateTimeParser[] parserList = { DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ss.SSS a").getParser(),
DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS").getParser(),
DateTimeFormat.forPattern("MM-dd-yyyy hh:mm:ss.SSS a").getParser(),
DateTimeFormat.forPattern("MM dd yyyy hh:mm:ss.SSS a").getParser(),
DateTimeFormat.forPattern("MM-dd-yyyy hh.mm.ss.SSS a").getParser() };
DateTimeFormatter formatter = new DateTimeFormatterBuilder().append(null, parserList).toFormatter();
DateTime date1 = formatter.parseDateTime("2010-01-01 01:01:01.001");
DateTime date2 = formatter.parseDateTime("08/03/2016 03:01:33.790 PM");
System.out.println(date2);
System.out.println(date1);
//
// DateTime dt = new DateTime();
// DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ss.SSS a");
// String str = fmt.print(dt);
//
// System.out.println(str);
}
}
Run Code Online (Sandbox Code Playgroud)