我有一个来自 .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/