我正在使用 ColdFusion 9.0.1 和一些我无法更改的数据库。
我正在访问一个数据库,该数据库将日期存储为八位数字,小数位为零,如下所示:
YYYYMMDD
我需要能够读取日期、从日期中添加和减去天数以及创建新日期。我正在寻找一种 ColdFusion 解决方案来有效地(代码不多)将日期转换为我们的标准格式,即
MM/DD/YYYY
然后将其转换回数据库的格式进行保存。
我需要以非 ColdFusion 程序员可以轻松阅读并使用它、复制和修改它以用于其他功能(例如将日期添加到日期)的方式编写此代码。所以,我不是在寻找最少的代码,而是高效且可读的代码。
您能否提出任何可以使此代码块更灵活、更易读或更高效(更少代码)的建议?
<cfscript>
// FORMAT DB DATE FOR BROWSER
DateFromDB = "20111116";
DatedToBrowser = createBrowserDate(DateFromDB);
writeOutput(DatedToBrowser);
function createBrowserDate(ThisDate) {
ThisYear = left(ThisDate, 4);
ThisMonth = mid(ThisDate, 4, 2);
ThisDay = right(ThisDate, 2);
NewDate = createDate(ThisYear, ThisMonth, ThisDay);
NewDate = dateFormat(NewDate, "MM/DD/YYYY");
return NewDate;
}
// FORMAT BROWSER DATE FOR DB
DateFromBrowser = "11/16/2011";
DateToDB = createDBDate(DateFromBrowser);
writeDump(DateToDB);
function createDBDate(ThisDate) {
ThisYear = year(ThisDate);
ThisMonth = month(ThisDate);
ThisDay = day(ThisDate);
NewDate = "#ThisYear##ThisMonth##ThisDay#";
return NewDate;
}
</cfscript>
最佳答案
首先找到谁做过数据库,然后把他们踢死……
就我个人而言,我会使用 sql 进行转换,所以我的代码只处理日期对象。
Select Convert(DateTime, Convert(VarChar(8),DateTimeInventedByIdjitColumn))
From SomeTable
正如我们的同行所说,将日期存储为日期。
“08/06/2011”可能是 6 月 8 日或 8 月 6 日,具体取决于地区。
20111643 是一个有效的整数。
不使用正确的日期类型只是一大堆功能和错误,充其量是在等待发生。
关于date - 将八位数字转换为日期的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156585/