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