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

标签 java regex string

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


更新

感谢大家的快速回复,但是我忘了告诉你 [] 是可选的符号,字符串中没有 [] 示例字符串可能是

  • 22/01/2010
  • 22/01/2010 至 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;
        }
    }

最佳答案

使用 java.text.DateFormatjava.text.SimpleDateFormat 来完成。

DateFormat sourceFormat = new SimpleDateFormat("dd/MM/yyyy");
String dateAsString = "25/12/2010";
Date date = sourceFormat.parse(dateAsString);

更新:

如果您在该字符串中隐藏了两个日期,则必须将它们分成两部分。我认为其他人已经指出了“ split ”的想法。我只是在空格处换行并丢弃“TO”。

不用担心效率。您的应用程序可能会充斥着比这更糟糕的低效率问题。使其正常工作并仅在分析告诉您此代码段是最严重的问题时才重构它。

关于java - 以这种格式从字符串中解析日期 : dd/MM/yyyy [to dd/MM/yyyy],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3386520/

相关文章:

java - 在 Android 应用程序 (Firebase) 上添加多个条目

java - JavaFX 的自动完成在 eclipse luna 中不起作用

javascript - 正则表达式替换值和字符之间

Python的re库的sub方法 "eating"捕获组

string - 将数字串转换为其数字 big.Rat 值的最佳方法

java - 访问器方法中对象的副本

php - 从字符串中提取信息的正则表达式的替代方案

python - 在python中打印 float

java - 为什么 System.out.println ("hey s1==s2:"+s1==s2);打印 "false"作为输出而不是打印 "hey s1==s2:false"

java - 在Android中使用Java生成二维码