date - 将八位数字转换为日期的最有效方法是什么?

标签 date coldfusion coldfusion-9

我正在使用 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/

相关文章:

coldfusion - 将超过 100 个参数传递给 ColdFusion 函数会引发错误

sql - 这个 sql where 子句有什么问题?

r - 帮助解释/转换奇数日期格式

jquery - 如何打破 Jquery UI 日期选择器中的日期值?

Java解析不同的日期类型

Coldfusion - 四舍五入到最接近的 5 美分

amazon-web-services - 创建新存储桶或使用 OpenBD 检查存储桶是否存在时,某些功能似乎不存在

scripting - 我们可以用等效的 cfscript 语句替换每个 ColdFusion 标签吗?

MySQL - Where 子句处理顺序

json - CF 在 cf2016 中接受 JSON 字符串,但在 cf9 中不接受