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

我们可以将字符串格式的日期dd / mm / yyy转换为相同格式的日期类型吗?

谭昱
2023-03-14

我正在使用带有jquery日期选择器的struts2. x。
我想以dd/mm/yyyy的格式显示。但是从数据库中获取它的时候就像yyyy-mm-dd.Then我将其转换为所需的格式,但类型是String。所以接下来我将其转换为Date类型。但格式已更改。

Date getRiskCommDate()
{
String fString = null;
System.out.println("Coming Date from DB"+riskCommDate);
if(riskCommDate!=null)
{
SimpleDateFormat format = new SimpleDateFormat();
format.applyPattern("dd/MM/yyyy");
fString = format.format(riskCommDate);
}
System.out.println("Formated Date in  String Form "+fString);
Date d = new Date(fString);
System.out.println("Formated Date in Date form Date "+d);
return d;  
}  

输出:

来自DB的日期2012-07-04
以字符串形式形成日期04/07/2012
以日期形式形成日期日期星期六Apr 07 00:00:00 IST 2012

任何想法都受到高度赞赏。

共有3个答案

周朗
2023-03-14

与早期Java捆绑在一起的旧的麻烦的日期时间库已经被内置于Java 8和更高版本中的java.time框架所取代。对于Java 6

java。时间类包括LocalDate,用于不带时间和时区的仅日期值。

希望JDBC驱动程序能够更新为直接处理java.time类型。在此之前,请使用 java.sql 类型将数据移入/移出html" target="_blank">数据库。旧的java.sql类有新的...valueOf 方法,用于与 java.time 进行转换。我们感兴趣的是java.sql.Date

LocalDate localDate = myJavaSqlDate.toLocalDate();

您可以转到另一个方向,以提交到数据库。

java.sql.Date myJavaSqlDate = java.sql.Date.valueOf( localDate );

讨论的日期类(java.util.Date、java.sql.Date、java.time.LocalDate)都没有任何“格式”。只有它们值的文本表示形式有格式。如果您需要一个String,这些类可以为您生成一个String对象。但不要将该String对象与日期时间对象混淆,因为它们是完全独立的。

LocalDate上的toString方法使用标准ISO 8601格式,例如2012-07-04(意思是2012年7月4日)。

String outputIso8601 = localDate.toString();

对于其他格式,请使用DateTimeFormatter。关于堆栈溢出的许多其他问题和答案还有更多讨论。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy" );
String output = localDate.format( formatter ); // Generates a textual representation of the object’s date-only value.

更好的是,让我们使用java。时间为你定位。

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT );
formatter = formatter.withLocale( Locale.CANADA_FRENCH ); // or Locale.US, and so on.
String output = localDate.format( formatter );

java.time框架内置在Java8及更高版本中。这些类取代了麻烦的旧的遗留日期时间类,例如java.util.DateCalendar

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。

您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,不需要< code>java.sql.*类。

在哪里可以获得java。上课时间到了吗?

    < li>Java SE 8、Java SE 9和更高版本 < ul > < li >内置。 < li >捆绑实现的标准Java API的一部分。 < li>Java 9增加了一些小功能和修复。
  • 许多java.time功能被反向移植到Java6
  • Android的更高版本是java的捆绑实现。上课时间到了
  • 对于早期的Android(

ThreeTen-Extra项目用额外的类扩展了java.time。这个项目是java.time未来可能增加的内容的试验场。您可能会在这里找到一些有用的类,如< code>Interval 、< code>YearWeek 、< code>YearQuarter等等。

汪成仁
2023-03-14

Date打印基于区域设置的格式。它不会“记住”你给它的格式,你想要它构造。只有字符串有特定的格式,所以如果你需要,就把它作为字符串保存。

蒋阳华
2023-03-14

java.util.Date 类没有任何用于保存格式的属性。

要以自定义格式显示日期的值,请调用SimpleDataFormat

当你这样做时:

System.out.println(dateInstance)

…您只需在日期调用toString()。该方法以<code>字符串</code>版本的固定格式返回日期。

根据这些评论

如果您希望使用带有日期实例的自定义格式,则可以创建自定义类包装日期实例

class MyDate{
  private Date date;
  //provide appropriate accessor
  //override toString() method to support required output
}

扩展日期

class MyDate extends Date{
   //override toString() method to support required output
   @Override
   public String toString(){
        //convert `this` to  String with required format with the help of `SimpleDateFormat`
   }
}
 类似资料:
  • 我试图通过获取日期然后填充表来获取存储在数据库中的数据。 这里的问题是,它给了我一个错误异常: Java语言lang.ClassCastException:类java。无法将lang.字符串转换为类java。util。日期(java.lang.String和java.util.Date位于加载程序“bootstrap”的模块java.base中) 我知道怎么了,因为 因此,有没有办法将给定值更改为

  • 问题内容: 我在网络上阅读了更多问题,但还没有找到解决方案。 我有一个完全像这种格式的 字符串, 例如“ 14/05/1994”。 我需要以 相同的格式* 将其隐藏到 java.util.Date 中。 * 我试过了: 但结果是:1994年5月14日星期六星期六00:00:00 结果是:1994年5月14日不是字符串,而是java.util.Date? 问题答案: 一个不 具有 的格式。这只是个约

  • 问题内容: 我有多个具有生日的联系人,并且所有联系人都已与移动设备同步。现在的问题是所有联系人的生日格式都不同,我想以“ dd-MM- yyyy”之类的特定格式显示所有生日日期。 因此,例如,一个同步联系人的生日为“ 1990-02-07”或“ 1988-06-15T22:00:00.000Z”或“ 12-02-1990”等,则应显示所有这些日期以特定格式“ dd-MM-yyyy”。 那我该如何解

  • 我有多个联系人的出生日期,并且都与移动设备同步。现在的问题是所有联系人都有不同的生日格式,我想以特定格式显示所有生日日期,例如“dd-MM-yyyy”。 例如,一个同步联系人的生日是“1990-02-07”或“1988-06-15T22:00:00.000Z”或“12-02-1990”等...那么所有这些日期都应该以特定的格式“dd-MM-yyyy”显示。 那么我该如何解决这个问题呢? 如有任何建

  • 问题内容: 我有一个像这样的字符串。我想将其转换为相同格式的日期。我尝试过这样的事情: 但是输出是不同的格式,例如。我怎样才能使其按需工作。谁能帮我。我知道这可能是重复的,但我没有发现任何运气。 问题答案: 从Java APIhttps://docs.oracle.com/javase/8/docs/api/java/util/Date.html Date类表示特定的时间瞬间,精度为毫秒。 试着去

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