java - 如何在日期数据类型中存储字符串数据类型值

标签 java

我正在尝试以日期数据类型存储字符串,但没有找到任何解决方案

String string = "20171218";
try {
      DateFormat dateformat = new SimpleDateFormat("yyyyMMdd");
      Date dateto=dateformat.parse(string); // convert stringDate to matching Date format
      String parsed = dateformat.format(dateto);
      System.out.println(parsed);

} catch (Exception e) {

}

在上面的代码中,我的日期再次转换为字符串数据类型,但是,我想将日期存储为日期数据类型

例如: 而不是 String parsed = dateformat.format(dateto); 我想存储为Date parsed = dateformat.format(dateto);,如何解决这个问题

最佳答案

tl;博士

LocalDate.parse( 
    "20171218" , 
    DateTimeFormatter.BASIC_ISO_DATE 
) 

避免遗留日期时间类

您正在使用麻烦的旧日期时间类,这些类现在已经成为遗留问题。

此外,您不恰本地尝试使用日期+时间类型 (java.util.Date) 表示仅日期值。

详细信息

使用现代 java.time 类。

LocalDate类表示仅日期值,没有时间和时区。

DateTimeFormatter f = DateTimeFormatter.BASIC_ISO_DATE ;  // Built-in, pre-defined. 
LocalDate ld = LocalDate.parse( "20171218" , f ) ;

字符串

日期时间对象没有“格式”。不要将表示对象值的字符串与对象本身混为一谈。对象可以生成字符串来表示其值,也可以解析字符串来获取值,但对象和字符串是不同且分开的。

生成字符串为标准ISO 8601通过调用 toString 进行格式化。

String output = ld.toString() ;

2017-12-18

要生成与输入格式相同的字符串,请调用 format

String output = ld.format( DateTimeFormatter.BASIC_ISO_DATE ) ;

20171218

上面看到的“基本”指的是type of ISO 8601 formats其中分隔符的使用被最小化。我建议您通常尽可能使用扩展格式,在本例中为 2017-12-18。在解析/生成字符串时,默认情况下在整个 java.time 类中使用这些扩展格式。

要生成其他格式的字符串,请搜索 Stack Overflow 以获取有关 DateTimeFormatter 的信息。 。

DateTimeParseException

要在解析时捕获无效输入,请捕获 DateTimeParseException .

try {
    DateTimeFormatter f = DateTimeFormatter.BASIC_ISO_DATE ;
    LocalDate.parse( "20171218" , f ) ;
} catch ( DateTimeParseException e ) {
    … handle exception
}
<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

从哪里获取java.time类?

ThreeTen-Extra项目通过附加类扩展了 java.time。该项目是 java.time future 可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter ,和 more .

关于java - 如何在日期数据类型中存储字符串数据类型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47877239/

相关文章:

java - 关于学习TDD的问题

java - tomcat 8.0.32 - 生产服务器中 Server.xml 配置中的性能调整

java - 子类使用 getter 和 setter 访问父类(super class)成员是否很常见?

JavaFX 应用程序更新无需管理员权限

java - 是否可以使用单个属性文件来管理并发写入?

java - 从数组元素(例如由句点分隔的索引 1 和索引 7)组成一个字符串

java - 使用 Retrofit2 迭代网络 API 调用

java - 为什么缺席返回类型没有编译错误

java - 如何强制 Vaadin v8 更新屏幕?

Java非二叉树前序遍历