gpt4 book ai didi

Java将从数据库返回的日期值拆分为单独的日期和时间字符串

转载 作者:行者123 更新时间:2023-12-02 08:03:49 25 4
gpt4 key购买 nike

我正在从 Oracle DB 读取日期列。

列类型为日期

示例日期数据为:2011-12-06 14:28:12

现在,当我读取此日期时,我想将日期部分拆分为单独的字符串,将时间部分拆分为另一个字符串。

//这是我正在使用的代码。

DateFormat df = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); 

// some loop.
SomeBean bean = new SomeBean();
Date date = convertTimestamp(rs.getTimestamp("DATE_VAL"));
bean.setTime(date==null?"":convertToTimeStamp(date,true));
bean.setDate(date==null?"": df.format(date));
// end some loop.

private java.util.Date convertTimestamp(java.sql.Timestamp timestamp) {
if (timestamp == null)
return null;
else
return new java.util.Date(timestamp.getTime());
}

private String convertToTimeStamp(Date date, boolean showSeconds) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return convertToTimeStamp(c, showSeconds);
}

public static String convertToTimeStamp(Calendar time, boolean showSeconds) {
String hours = Integer.toString(time.get(Calendar.HOUR_OF_DAY));
if (hours.length() == 1) {
hours = '0' + hours;
}
String minutes = Integer.toString(time.get(Calendar.MINUTE));
if (minutes.length() == 1) {
minutes = '0' + minutes;
}
if (showSeconds) {
String seconds = Integer.toString(time.get(Calendar.SECOND));
if (seconds.length() == 1) {
seconds = '0' + seconds;
}
return hours + ":" + minutes + ":" + seconds;
} else {
return hours + ":" + minutes;
}
}

请帮忙。我们将不胜感激您的帮助。

谢谢

最佳答案

首先我建议看看Joda-Time :它有很多简单的日期和时间功能。 (比java日期容易得多)。

将 java.sql.Date 转换为我使用的 joda DateTime:

public static DateTime convertSqlDateToDateTime(java.sql.Date sqlDate){
Calendar c = Calendar.getInstance();
c.setTime(sqlDate);
//note: java months are between 0 and 11:
DateTime dt=new DateTime(c.get(Calendar.YEAR),c.get(Calendar.MONTH)+1,c.get(Calendar.DAY_OF_MONTH),c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE),c.get(Calendar.SECOND),c.get(Calendar.MILLISECOND));
return dt;
}

这至少会为您节省一个功能,并且可能会帮助您找到解决方案。

将 java.sql.TimeStamp 转换为 joda DateTime:

public static DateTime convertSqlTimeStampToDateTime(java.sql.Timestamp sqlTimestamp){
Calendar c = Calendar.getInstance();
c.setTime(sqlTimestamp);
//note: java months are between 0 and 11:
DateTime dt=new DateTime(c.get(Calendar.YEAR),c.get(Calendar.MONTH)+1,c.get(Calendar.DAY_OF_MONTH),c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE),c.get(Calendar.SECOND),c.get(Calendar.MILLISECOND));
return dt;
}

其次,为什么不使用 DateFormatter 将日期转换为您想要的字符串?

坚持使用 Joda DateTime,使用:

/**
* Converts a DateTime to a string using the given pattern (format)
* @param dateTime
* @param pattern
* @return
*/
public static String convertDateTimeToPattern(DateTime dateTime,String pattern){
DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern);
return dateTime.toString(fmt);
}

您可以使用与 java.Date 和 Time 格式化程序相同的格式:

pattern =“DD-MM-YYYY”(荷兰语表示法)或“YYYY-MM-DD”(英国表示法)以及时间pattern=“hh:mm:ss”

如果您想坚持使用您的方法,请创建另一个 SimpleDateFormat,并使用最后一个模式(“hh:mm:ss”)创建时间字符串。

请至少更改此功能:

public static String convertToTimeStamp(Calendar time, boolean showSeconds)

进入:

public static String convertToTimeStamp(Date date, boolean showSeconds) {
String pattern = "hh:mm:ss";
if (!showSeconds) {
pattern = "hh:mm";
}
DateFormat df = new SimpleDateFormat(pattern);
return df.format(date);
}

在你的最后一句话中,我猜你要求:

public static String convertToDateString(Date date) {
String pattern = "YYYY-MM-DD";
//(or another date format, like in dutch: "DD-MM-YYY"
DateFormat df = new SimpleDateFormat(pattern);
return df.format(date);
}

关于Java将从数据库返回的日期值拆分为单独的日期和时间字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com