Coldfusion中的.Net时间字符串转换

标签 .net coldfusion coldfusion-11

我有一个来自 .NET 的六位数时间字符串,我想在 ColdFusion 中转换为时间戳。转换它的正确方法是什么?

string= 20190126195631

日期很简单:
thisDate = '#mid(string,5,2)#/#mid(string,7,2)#/#mid(string,1,4)#'

为了获得我尝试过的时间:
timestamp = timeFormat(parseDateTime(mid(string,9,6)),'HH:mm')

我如何处理 195631显示时间戳?

最佳答案

(评论太长了...)

time = '#mid(string,9,2)-8#



不要只是从小时中减去 8,因为当 UTC 值介于午夜和早上 7 点之间时,它会返回无效值,例如“-1”AM 或“-8”AM。

此外,如果您要将值转换为本地时间,请不要忘记夏令时更改。 8 小时的偏移量可能会更改为 7 小时,具体取决于一年中的时间和区域。不使用硬编码数字,而是查看 DateConvert函数将 UTC 转换为本地时间并使用 ParseDateTime使用掩码,而不是多个字符串函数。

请记住,根据您的 CF 版本,所有建议的方法都有优点,缺点......和可悲的潜在错误/陷阱......。所以一定要测试各种日期值和时区。

ColdFusion 2016+ 语法 (注意,使用“nn”表示分钟。Runnable Example)
str = "20190126175631";
utcDate = parseDateTime(str, "yyyyMMddHHnnss");
localDate = DateConvert("utc2Local", utcDate);

writeOutput("utcDate ="& utcDate &" localDate = "& localDate);

ColdFusion 10/11 语法 (注意,使用“mm”表示分钟。Runnable Example)
str = "20190126175631";
utcDate = parseDateTime(str, "yyyyMMddHHmmss");
localDate = DateConvert("utc2Local", utcDate);

writeOutput("utcDate ="& utcDate &" localDate = "& localDate);

关于Coldfusion中的.Net时间字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54382347/

相关文章:

.net - 如何配置 TopShelf 以作为 ServiceAccount.NetworkService 运行服务?

sql - 为什么 SQL 大小写不起作用

coldfusion - 如何在 Coldfusion 10 中获取应用程序数据源名称?

ColdFusion - 使用 CFLOOP 动态创建列名称

iis - CF 11.使用 ColdFusion.Ajax.submitForm 时出现 'ColdFusion is not defined' 错误

coldfusion - queryExecute 函数中的 queryOptions 有哪些选项?

java - CFHTTP - 从以 block 为单位传输的 URL 中读取数据

c# - 多个应用程序域调用同一个非托管 dll

c# - 编写在线支付处理系统

.net - 如何始终启用询问智能卡 PIN 码的对话框?