Coldfusion 以天、小时、分钟计算秒数
Coldfusion calculate seconds in days, hours, min
我想将秒转换为天、小时和分钟
目前,它只能工作几小时和几分钟,而不是几天。你能支持我吗?告诉我我做错了什么:
<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 分钟
我唯一的问题是获得正确的日期...显示的是小时和分钟,但不是正确的日期
感谢大家的支持
我从你的问题中了解到,你不需要沿着时间轴获取特定的日期和时间,而是将总秒数转换为天、小时和分钟。为此,您不必使用 cfml 时间和日期函数,如 CreateTime() 或 DateAdd()。您可能只需要这些以便沿着时间轴获得参考时间点或日期,但事实并非如此,否则您会知道起始 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.
计算间隔的一种简单方法是利用 modulus operator:
totalSeconds = 94152;
days = int(totalSeconds / 86400);
hours = totalSeconds / 3600 % 24;
minutes = totalSeconds / 60 % 60;
seconds = totalSeconds % 60;
94152
秒后,结果为:
Interval
Value
DAYS
1
HOURS
2
MINUTES
9
SECONDS
12
TOTALSECONDS
94152
我想将秒转换为天、小时和分钟 目前,它只能工作几小时和几分钟,而不是几天。你能支持我吗?告诉我我做错了什么:
<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 分钟
我唯一的问题是获得正确的日期...显示的是小时和分钟,但不是正确的日期
感谢大家的支持
我从你的问题中了解到,你不需要沿着时间轴获取特定的日期和时间,而是将总秒数转换为天、小时和分钟。为此,您不必使用 cfml 时间和日期函数,如 CreateTime() 或 DateAdd()。您可能只需要这些以便沿着时间轴获得参考时间点或日期,但事实并非如此,否则您会知道起始 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.
计算间隔的一种简单方法是利用 modulus operator:
totalSeconds = 94152;
days = int(totalSeconds / 86400);
hours = totalSeconds / 3600 % 24;
minutes = totalSeconds / 60 % 60;
seconds = totalSeconds % 60;
94152
秒后,结果为:
Interval | Value |
---|---|
DAYS | 1 |
HOURS | 2 |
MINUTES | 9 |
SECONDS | 12 |
TOTALSECONDS | 94152 |