Coldfusion以天、小时、分钟为单位计算秒



我想将秒转换为天、小时和分钟目前,它只工作几个小时和几分钟,但不是几天。你能支持我吗?告诉我我做错了什么:

<cfscript>
seconds = '87400';
midnight = CreateTime(0,0,0);
time = DateAdd("s", seconds, variables.midnight);
date= xxxxxxxxxxxxxxxxxxxxx???
</cfscript>
<cfoutput>
#DateFormat(variables.date, 'd')#  not working 
#TimeFormat(variables.time, 'HH:mm')#
</cfoutput>

对于值87400,预期结果为

  • 1天0小时16分钟

如果我用94152秒,它将是:

  • 1天3小时22分钟

我唯一的问题是获得正确的日期。。。显示小时和分钟,但不是正确的日期

感谢的支持

计算区间的一种简单方法是利用模运算符:

totalSeconds  = 94152;
days = int(totalSeconds / 86400); 
hours = totalSeconds / 3600 % 24; 
minutes = totalSeconds / 60 % 60; 
seconds = totalSeconds % 60;

对于94152秒,结果为:

间隔
天数1
小时2
分钟9
12
总秒数94152

我从你的问题中了解到,你不需要沿着时间线获得特定的日期和时间,而是将总秒数转换为天、小时和分钟。要做到这一点,您不需要使用像CreateTime((或DateAdd((这样的cfml时间和日期函数。你可能只需要这些来获得时间轴上的参考时间点或日期,但事实并非如此,否则你就会知道起始date变量的值。因此,您可以用简单的三条规则来解决这个问题。可能有更简单的方法,所以我只发布一个替代方法。

我们知道:

60 seconds is equivalent to 1 minute
60 minutes is equivalent to 1 hour
24 hours is equivalent to 1 day

因此,你在cfml中的计算可能是这样的:

<cfscript>
//Constants for calculation
secondsPerDay= 60*60*24;
secondsPerHour= 60*60;
secondsPerMinute= 60;
//Seconds to convert
secondsTotal=87400;

// temp variable
secondsRemain= secondsTotal;

days= int( secondsRemain / secondsPerDay);
secondsRemain= secondsRemain - days * secondsPerDay;
hours= int( secondsRemain / secondsPerHour);
secondsRemain= secondsRemain - hours * secondsPerHour;
minutes= int( secondsRemain / secondsPerMinute);
secondsRemain= secondsRemain - minutes * secondsPerMinute;
writeoutput( "#secondsTotal# seconds are: #days# days, #hours# hours, #minutes# minutes and #secondsRemain# seconds." );
</cfscript>

输出:

87400 seconds are: 1 days, 0 hours, 16 minutes and 40 seconds.

最新更新