当前位置: 首页 > 面试题库 >

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

昝枫
2023-03-14
问题内容

我想在Java中解析这种格式为dd / MM / yyyy [至dd / MM /
yyyy]的String的最佳方法是什么。带[]的字符串是可选的,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);

更新:

如果在该字符串中隐藏了两个日期,则必须将它们分为两部分。我认为其他人指出了“拆分”的想法。我只是在空白处休息,然后扔掉“ TO”。

不用担心效率。您的应用可能效率低下,比这糟得多。使它正常工作,并仅在分析告诉您此代码段是最严重的违规行为时,才对其进行重构。



 类似资料:
  • 问题内容: 我正在尝试从转换日期。我已经使用了mktime()函数和其他函数,但是我似乎无法使其工作。我已经成功地将原始日期用作定界符,但更改格式并将其与交换时没有成功。 任何帮助将不胜感激。 问题答案: 通过查看各个组成部分之间的分隔符,可以消除或格式中的日期的歧义:如果该分隔符是斜杠(),则假定为American ;否则,为0。反之,如果分隔符是破折号()或点(),则采用欧洲格式。 使用默认的

  • 我有一个格式为。我希望它的格式为 下面是我尝试进行此转换的示例util: 但是,我得到的输出不是格式。 请告诉我如何将从格式化为

  • 我从格式为yyyy-mm-dd(加上不需要的hh-mm-ss)的API中获取日期结果。我想在jQuery中将其转换为dd-mm-yyyy格式,最简单/最快的方法是什么? 目前我正在使用:(对于返回的字符串yyyy-mm-dd): 但是好像有点啰嗦。

  • 我有格式为“2020/02/25 23:58:08”的日期字符串。我想把它解析为‘2020-02-25’。 注意:最初的日期是字符串格式,转换后无论是日期格式还是字符串格式都无关紧要。 文件js公司 当我运行这个程序时,我得到了未捕获的引用错误:gi未定义,gi是全局替换

  • 问题内容: 可能重复: 扩展JavaScript的Date.parse以允许DD /MM/YYYY(非美国格式的日期)吗?将dd-mm-yyyy字符串转换为日期 在文本框中输入日期,例如: 05/09/1985,我想将其转换为1985年9月5日(dd-MMM-yyyy)格式。我将如何实现?请注意,源格式可以是或或格式。 代码段: 此代码返回 1985年 5月9 日, 但我希望 1985年9月5日

  • 问题内容: 当前正在使用MLS数据转储,其中所有日期都以MM / DD / YYYY格式格式化,试图获取最小/最大寿命 显然,这是不起作用的,因为采用了上述格式。 有任何想法吗? 问题答案: 使用str_to_date进行转换。