Coldfusion 日期差异(天数和小时数)

Coldfusion date difference in days and hours

我在使用 Coldfusion 的 DateDiff() 时遇到问题。我正在尝试获取两个日期与时间之间的差异,例如以下示例:

fromdate=06/11/2017 22:10
todate  =16/11/2017 23:20

应该return:

10 days, 1 hour and 10 minutes

fromdate=06/11/2017 22:10
todate  =16/11/2017 20:20

应该return:

9 days, 22 hours, 10 minutes

有什么帮助吗?

代码:

<cfset dtFrom = "11/06/2017 22:10" /> 
<cfset dtTo = "11/16/2017 23:20" />

<cfoutput>
#DateDiff( "d", dtFrom, dtTo)# Days, 
#DateDiff( "h", dtFrom, dtTo) % 24# Hours 
#DateDiff( "n", dtFrom, dtTo) % 24 % 60# Minutes 
</cfoutput>

这是一种方法。

totalMinutes = datediff("n", fromDate, toDate);
days = int(totalMinutes /(24 * 60)) ;
minutesRemaining = totalMinutes - (days * 24 * 60);
hours = int(minutesRemaining / 60);
minutes = minutesRemaining mod 60;
writeoutput(days & ' days ' & hours & ' hours ' & minutes & ' minutes');

除了 之外,DateDiff() 不会理解那些 特定的 字符串或者“06/11/2017”应该表示十一月6. 结果将是:

158 days 1 hours 10 minutes 

要使其按预期工作,您必须先将字符串转换为日期对象。例如,将 LSParseDateTime 与正确的语言环境一起使用。

fromDate = lsParseDateTime("06/11/2017 22:10", "English (UK)", "dd/MM/yyyy hh:mm");
toDate = lsParseDateTime("16/11/2017 23:20", "English (UK)", "dd/MM/yyyy hh:mm");

或者可能:

fromDate = lsParseDateTime("06/11/2017 22:10", "English (UK)");
toDate = lsParseDateTime("16/11/2017 23:20", "English (UK)");