以这种格式从字符串解析日期:dd/MM/yyyy [to dd/MM/yyyy]

Yij*_*sei 4 java regex string

我想在Java中使用这种格式解析String的最佳方法是dd/MM/yyyy [到dd/MM/yyyy].带[]的字符串是可选的,dd代表日期的2位数表示,MM是月份的2位数表示,yyyy是年份的4位数表示.


更新

谢谢大家的快速响应,但是我忘了告诉你[]是象征可选的,字符串中没有[]示例字符串可能是

  • 22/01/2010
  • 2010年1月22日至23/01/2010
  • 空值

目前我用这种方式编写代码,工作但很难看=(

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.DateFormatjava.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".

不要担心效率.你的应用程序很可能充满了比这更糟糕的低效率.只有当分析告诉你这个片段是最糟糕的罪犯时,才能使它正常工作并重构它.