当前位置: 首页 > 知识库问答 >
问题:

如何将“Mon Jun18 00:00:00 IST 2012”转换为18/06/2012?

龙华翰
2023-03-14

我有一个类似以下Mon Jun 18 00:00:00 IST 2012的值,我希望将其转换为18/06/2012

如何转换这个?

public String toDate(Date date) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        Date theDate = null;
        //String in = date + "/" + month + "/" + year;
        try {
            theDate = dateFormat.parse(date.toString());
            System.out.println("Date parsed = " + dateFormat.format(theDate));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateFormat.format(theDate);
    }

java.text.ParseException:不可解析的日期:“Mon Jun 18 00:00:00 IST 2012”

共有1个答案

寿飞飙
2023-03-14

现代方法是使用java.time类。这些类取代了麻烦的旧遗留日期时间类,如datecalendarSimpleDateFormat

解析为ZonedDateTime

String input = "Mon Jun 18 00:00:00 IST 2012";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" )
                                       .withLocale( Locale.US );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );

提取一个只包含日期的对象,即localdate,不包含任何一天的时间和任何时区。

LocalDate ld = zdt.toLocalDate();
DateTimeFormatter fLocalDate = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
String output = ld.format( fLocalDate) ;
System.out.println( "input: " + input );
System.out.println( "zdt: " + zdt );
System.out.println( "ld: " + ld );
System.out.println( "output: " + output );

LD:2012-06-18

产出:18/06/2012

请查看在ideone.com中实时运行的代码。

要了解更多信息,请参阅Oracle教程。并搜索堆栈溢出的许多例子和解释。规范是JSR310。

从哪里获得java.time类?

  • Java SE 8和SE 9及更高版本
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java9添加了一些小特性和修正。
      null
      null

    ThreeTen-Extra项目使用额外的类扩展了java.time。这个项目是将来可能添加到java.time的试验场。您可以在这里找到一些有用的类,如intervalYearWeekYearQuarter等。

 类似资料:
  • 问题内容: 我有一个像下面的值,我想将其转换为 如何转换呢? 我尝试过这种方法 但它引发以下异常: 问题答案: 我希望以下程序可以解决您的问题

  • 问题内容: 字段定义 二传手 有谁知道如何将“零日期”转换为适当的值?因为我有错误: 即使我像这样设置“默认”字段和设置器: 我仍然会有同样的问题。 问题答案: 在这里,我将大胆猜测您正在使用MySQL :-)它使用“零日期”作为特殊占位符 -不幸的是,JDBC默认情况下无法处理它们。 解决方案是将“ zeroDateTimeBehavior = convertToNull”指定为MySQL连接的

  • 问题内容: 字段定义 二传手 有谁知道如何将“零日期”转换为适当的值?因为我有错误: 即使我像这样设置“默认”字段和设置器: 我仍然会有同样的问题。 问题答案: 在这里,我将做出一个疯狂的猜测,即您正在使用MySQL :-)它使用“零日期”作为特殊的占位符 -不幸的是,默认情况下JDBC无法处理它们。 解决方案是将“ zeroDateTimeBehavior = convertToNull”指定为

  • 原因:java.time.format.DateTimeParseException:无法解析文本'Feb18 2015 12:00:00:000AM':发现冲突:字段AmPmOfDay 1与从12:00派生的AmPmOfDay 0不同 我错过了什么?Thx预付款

  • 问题内容: 我有一个字符串‘2009-06-24 09:52:43.000’,我需要将其插入到表的DateTime列中。 但我不在乎时间,只想将其插入为2009-06-24 00:00:00.000 如何在T-SQL中做到这一点? 问题答案: 对于SQL Server 2005及以下版本: 对于SQL Server 2008及更高版本:

  • 问题内容: 如何将字段的默认值设置为“ 0000-00-00 00:00:00”?如果我们不能使用“ 0000-00-00 00:00:00”作为默认值?什么是 基本 有效tiemdate? 例如,这是用于创建我的商品表的SQL, 运行此查询时出现此错误, 问题答案: 错误原因:SQL模式 您可以设置的默认值,或场特殊的“零”作为虚拟日期“0000-00-00”值,如果SQL模式允许它。对于低于5