Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将字符串转换为日期_Java_Date_Simpledateformat - Fatal编程技术网

Java将字符串转换为日期

Java将字符串转换为日期,java,date,simpledateformat,Java,Date,Simpledateformat,我有一个数据库日期字段,返回为 resultSet.getDate("startDate"); 我想将此文件的格式更改为dd-MMM-yy,并保留为日期类型,这意味着我不想将其转换为字符串 我有以下代码片段来更改日期格式 private Date getDate(ResultSet resultSet,Date columnName) SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yy"); String date =

我有一个数据库日期字段,返回为

resultSet.getDate("startDate");

我想将此文件的格式更改为
dd-MMM-yy
,并保留为日期类型,这意味着我不想将其转换为字符串

我有以下代码片段来更改日期格式

private Date getDate(ResultSet resultSet,Date columnName)
SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yy");
String date = 
        new SimpleDateFormat("dd-MMM-yy").format(columnName);
将字符串再次转换回具有相同日期格式的日期的最佳方法是什么

dd-MMM-yy

要将字符串转换回日期,请使用:

Date date = new SimpleDateFormat("dd-MMM-yy", Locale.US).parse("01-JAN-84");
保留日期数据而不转换为字符串的一种方法是调用:

long time = date.getTime();
然后,您可以使用以下方法将其构造回最新版本:

Date date = new Date(time);

您可以随时使用SimpleDataFormat将其格式化为字符串。当然,这种方法与直接传递日期对象没有什么不同。

我建议您使格式可重用

private static SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy");
然后呢

Date converted = sdf.parse(dateString);

我想将其格式更改为dd-MMM-yy,并保留为日期类型,这意味着我不想将其转换为字符串

这是不可能的;您对
日期
对象表示的内容有误解

Date
对象只包含一个时间戳值,它不知道打印时应该如何格式化。因此,您不能拥有具有特定格式的
Date
对象

相反,您可以在
SimpleDateFormat
对象上设置格式,然后使用该格式将
Date
对象转换为文本

SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yy");
String date = format1.format(columnName);
System.out.println(date);
// back to Date
Date date2 = format1.parse(date);
System.out.println(date2.toString());

如果你想自定义它的输出,你真的需要使用日期格式。

我想你和我处境相同

经过大量的分析,我放弃了将字符串转换回日期,因为这将导致特定于您的系统的日期格式,为了保留日期格式,您应该始终将其保持为字符串类型,我确实为我的日期属性将日期类型转换为字符串类型

我有过这样的情景


我想得到两个日期之间的间隔,假设我的db日期格式为
“dd-MMM-yy”
,但您的系统格式为
“mm-dd-yyy”
,所以要比较两个日期,您需要将db格式/解析转换为系统格式,它应该以相同的格式进行比较,这对我来说是有意义的

检查您使用的是最佳方法。@Pphoenix那里的所有内容都转换回字符串,我希望返回日期而不是字符串String@Polppan很抱歉我的理解是相反的:)那样的话,我同意deepak@DeepakTiwari我希望返回日期而不是字符串。这并不总是一个好的解决方案,因为SimpleDataFormat不是线程安全的。我之所以希望使用日期格式,是因为我从数据库返回日期,因此,最好在以后的所有带有日期的进程中保持相同的格式。当您执行SimpleDataFormat时,字符串类型将保留日期格式。parse(date)将以系统格式给出日期。您可以尝试使用此Locale.setDefault(Locale.US)作为自定义区域设置。@请尝试将系统默认时间格式转换为db格式。这将是一种方式。杰斯珀,我同意你提到的关于日期的内容,因为它可能也包含时间戳。就这个应用程序而言,日期没有时间戳方面。由于我从数据库接收到这个数据作为日期,我想更改格式并将数据类型保留为日期。因此,我正在寻找如何实现这一点的解决方案。@Polppan
java.util.Date
可能不包含时间戳,它是一个时间戳。关于
java.sql.Date
:虽然在语义上表示日期,但它不能在jdbc上下文之外使用。而且这两种类型都没有与“我想更改格式并将数据类型保留为日期”相关的格式信息,正如我所解释的,这是不可能的;您对日期格式的理解有误。
日期
格式没有格式。您不能拥有具有特定格式的
Date
对象,也不能更改
Date
对象的格式。谢谢Jesper。您从一开始就知道,转换日期对象并将对象保留为日期是不可能的。感谢。将日期格式转换为2013年6月6日星期四00:00:00 GMT只需将Locale.US添加到构造函数中即可。这种方法的问题是格式更改,例如格式更改回2013年6月6日星期四00:00:00 GMT是,就是这样。您可以创建一个助手类,每当您向其传递日期时,该类都将格式化日期。您可以在应用程序中的任何位置访问它。