我在想在 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.DateFormat
和 java.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/