我想在Java中使用这种格式解析String的最佳方法是dd/MM/yyyy [到dd/MM/yyyy].带[]的字符串是可选的,dd代表日期的2位数表示,MM是月份的2位数表示,yyyy是年份的4位数表示.
更新
谢谢大家的快速响应,但是我忘了告诉你[]是象征可选的,字符串中没有[]示例字符串可能是
目前我用这种方式编写代码,工作但很难看=(
String _daterange = (String) request.getParameter("daterange");
Date startDate = null, endDate = null;
// Format of incoming dateRange is
if (InputValidator.requiredValidator(_daterange)) {
String[] _dateRanges = _daterange.toUpperCase().split("TO");
try {
startDate = (_dateRanges.length > 0) ? sdf.parse(_dateRanges[0]) : null;
try{
endDate = (_dateRanges.length > 1) ? sdf.parse(_dateRanges[1]) : null;
}catch(Exception e){
endDate = null;
}
} catch (Exception e) {
startDate = null;
}
}
Run Code Online (Sandbox Code Playgroud)
duf*_*ymo 13
使用java.text.DateFormat并java.text.SimpleDateFormat执行此操作.
DateFormat sourceFormat = new SimpleDateFormat("dd/MM/yyyy");
String dateAsString = "25/12/2010";
Date date = sourceFormat.parse(dateAsString);
Run Code Online (Sandbox Code Playgroud)
更新:
如果您有两个日期隐藏在该字符串中,则必须将它们分成两部分.我认为其他人已经指出了"分裂"的想法.我只是在空白处打破并扔掉"TO".
不要担心效率.你的应用程序很可能充满了比这更糟糕的低效率.只有当分析告诉你这个片段是最糟糕的罪犯时,才能使它正常工作并重构它.