【发布时间】:2017-08-15 00:07:55
【问题描述】:
我是第一次在这里接触 Java,所以请放轻松。我不得不更正别人的旧代码。这个 java 程序从 MySQL 表中获取数据并准备好在网页上展示。我发现他们的 MySQL 表出于某种原因对所有日期都使用了 INT 字段。因此,例如,今天的日期存储为 INT 3222017。我首先必须将正确的 DATE 列添加到 MySQL 表中。接下来,我重新编写了另一个 Java 脚本,以从更大的表中提取该脚本将使用的 MySQL 表的数据。
现在我需要将当前将 INT 字段格式化为 MM/dd/yyyy 的代码更改为采用 DATE 字段(存储为 yyyy-MM-dd)并将它们转换为相同的 MM/dd/yyyy。
这是一段在 INT 字段上使用函数 dateFormat 的代码 -
String formattedDate = "";
formattedDate = dateFormat(oneSpectro.getSpectroLastDate());
result.setSpectroLastDate(formattedDate);
formattedDate = dateFormat(oneSpectro.getSpectroOrigDate());
result.setSpectroOrigDate(formattedDate);
formattedDate = dateFormat(oneSpectro.getSpectroCalDate());
result.setSpectroCalDate(formattedDate);
}
return result;
}
这里是 dateFormat 函数 -
public String dateFormat(int theDate){
String dateString = "";
Integer dateInt = 0;
if (theDate < 10000000){
dateInt = new Integer(theDate);
dateString = dateInt.toString();
// Add preceding 0 to make the date 8 digits in length.
dateString = "0" + dateString;
}
else {
// Process an 8 digit date.
dateInt = new Integer(theDate);
dateString = dateInt.toString();
}
// Install date slashes in the date string.
if (dateString.length() == 8){
dateString = dateString.substring(0, 2) + "/" + dateString.substring(2, 4) + "/"
+ dateString.substring(4);
}
return dateString;
}
如何将 DATE 字段 (yyyy-MM-dd) 转换为 MM/dd/yyyy 的格式化日期?
【问题讨论】:
-
1112017呢?是 2017 年 1 月 11 日还是 2017 年 11 月 1 日?
-
好问题!我什至没有想到这一点 - 但这也可能是我被要求查看发生了什么的原因,因为某些页面显示的数据不准确。
-
如果您使用正确的
DATE列修复了数据库,请将其正常加载为java.sql.Date,然后使用SimpleDateFormat对其进行格式化。另外,有些人不应该被允许接触数据库。 -
@Kayaman - 所以跳过 dateFormat 函数,只在第一段代码中使用 SimpleDateFormat formattedDate 部分?
-
嗯,
dateFormat()的存在只是因为有人有以这种愚蠢的方式存储日期的天才想法。当您阅读普通日期时,您已经拥有了 Java 中包含的所有格式化功能。此外,日期实际上并未以2010-01-01格式存储。它以该格式显示给您。