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

Java-如何解析日期?

郑乐池
2023-03-14
问题内容

我正在尝试解析此日期,SimpleDateFormat但无法正常工作:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Formaterclass {
    public static void main(String[] args) throws ParseException{
        String strDate = "Thu Jun 18 20:56:02 EDT 2019";
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date dateStr = formatter.parse(strDate);
        String formattedDate = formatter.format(dateStr);
        System.out.println("yyyy-MM-dd date is ==>"+formattedDate);
        Date date1 = formatter.parse(formattedDate);

        formatter = new SimpleDateFormat("dd-MMM-yyyy");
        formattedDate = formatter.format(date1);
        System.out.println("dd-MMM-yyyy date is ==>"+formattedDate);
    }
}

如果我使用strDate =尝试此代码"2019-10-14",我将获得肯定的答案。有什么问题?如何解析这种格式?

PS。我从jDatePicker那里得到了这个日期,并且没有关于用户选择日期时如何修改日期格式的说明。


问题答案:

你不能期望使用设置为其他格式的SimpleDateFormat解析日期。

要解析“ 2009年Thu Jun 18 20:56:02 EDT 2019”日期字符串,你需要这样的SimpleDateFormat(大致):

SimpleDateFormat parser=new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");

使用此方法将字符串解析为Date,然后使用其他SimpleDateFormat将日期转换为所需的格式。

        String input = "Thu Jun 18 20:56:02 EDT 2009";
        SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
        Date date = parser.parse(input);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = formatter.format(date);

        ...


 类似资料:
  • 问题内容: SimpleDateFormat是一种非常友好的解析器,它滚动结果日期而不是抛出错误。如何在没有正则表达式等的情况下严格解析日期? 问题答案: 是您要寻找的。

  • 问题内容: 我知道这个问题已经问了很多,显然你不能解析任何日期。但是,我发现python-dateutil库能够解析我向它抛出的每个日期,而在找出日期格式字符串方面绝对需要零的工作。Joda time始终被当作是出色的Java日期解析器而出售,但是它仍然需要你在选择格式(或创建自己的格式)之前确定日期的格式。你不能只调用DateFormatter.parse(mydate)并神奇地获取Date对象

  • 问题内容: 我的日期格式为dd-mmm-yy或d- mmm-y,其中月份是字母的缩写(例如,09年11月4日或05年12月12日等)。喜欢解析它以产生一个java.util.Date对象。 可以通过利用java.text.DateFormat类来实现吗?还是有另一种简单的方法? 问题答案: 您可能需要使用SimpleDateFormat来解析自定义格式。此文章解释格式的细节。

  • 问题内容: 我在中收到格式日期。我如何解析它得到和。 ISO格式的日期: 问题答案: 一些参考 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html 希望能帮助到你

  • 问题内容: 如何将下面的日期字符串解析为一个Date对象? 引发异常… 问题答案: 模式是错误的。您有3个字母的天的缩写,因此必须为。您有3个字母的月份缩写,因此必须为。由于这些日和月的缩写对语言环境敏感,因此您也希望将语言环境明确指定为英语,否则它将使用平台默认语言环境,而语言环境本身可能不是英语。 这在这里打印 根据我的时区是正确的。 如果您不想使用代替,我也会重新考虑。阅读javadoc以获

  • 用Joda Time解析借记卡/信用卡到期日期真的很容易: 出: 我尝试了同样的操作,但使用Java Time API: 输出: 原因:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{MonthOfYear=2,Year=2016},类型为java.time.Format.Parsed的ISO、UTC,在java.time.L