不同时区的日期时间的 Datediff
Datediff for datetime in different time zones
已更新
我需要获取位于不同时区的两个日期时间之间的小时和分钟差异。
我有 MySQL 中的日期时间,以及 MySQL 中位置的 GMT 偏移量。
我尝试过的:
<cfset departure = CreateDateTime(2017,01,27,21,00,00)> <!--- (this time zone is +2) --->
<cfset arrival = CreateDateTime(2017,01,28,06,40,00)> <!--- (this time zone is -5) --->
<cfset depart_timezone = 2>
<cfset arrive_timezone = -5>
<cfset difference = datediff("h",departure,arrival)><!--- get the difference in hours --->
<cfset timezonedif = depart_timezone - arrive_timezone><!--- get the difference between the time zones (answer should be 7)--->
<cfset duration = difference + timezonedif><!--- add the time zone difference to the flight difference --->
<cfoutput>
(Duration: #duration# hours)<br>
</cfoutput>
这个 returns 16 小时是不正确的。时差应该是 15 小时 40 分钟。帮助将不胜感激。在这里呆了几个小时。
你做事的顺序错了。
您需要获得正确的 date/times - 所以添加/删除时区差异
<cfset departure = CreateDateTime(2017,01,27,21,00,00)> <!--- (this time zone is +2) --->
<cfset arrival = CreateDateTime(2017,01,28,06,40,00)> <!--- (this time zone is -5) --->
<cfset depart_timezone = -2>
<cfset arrive_timezone = 5>
<cfset tzDeparture = DateAdd('h',depart_timezone,departure)>
<cfset tzArrival = DateAdd('h',arrive_timezone,arrival)>
然后得到分钟总差额
<cfset difference = datediff("n",tzDeparture,tzArrival)>
然后只需计算一下将分钟转换为小时和分钟
<cfoutput>
Duration Total Mins: #difference#<br>
Duration Hours: #int(difference/60)#<br>
Duration Mins: #difference MOD 60#<br>
</cfoutput>
Output:
Duration Total Mins: 1000
Duration Hours: 16
Duration Mins: 40
你可以在这里看到一个例子:http://trycf.com/gist/26f5bce31db7787f4591317b7360ceb7/acf11?theme=monokai
已更新
我需要获取位于不同时区的两个日期时间之间的小时和分钟差异。
我有 MySQL 中的日期时间,以及 MySQL 中位置的 GMT 偏移量。
我尝试过的:
<cfset departure = CreateDateTime(2017,01,27,21,00,00)> <!--- (this time zone is +2) --->
<cfset arrival = CreateDateTime(2017,01,28,06,40,00)> <!--- (this time zone is -5) --->
<cfset depart_timezone = 2>
<cfset arrive_timezone = -5>
<cfset difference = datediff("h",departure,arrival)><!--- get the difference in hours --->
<cfset timezonedif = depart_timezone - arrive_timezone><!--- get the difference between the time zones (answer should be 7)--->
<cfset duration = difference + timezonedif><!--- add the time zone difference to the flight difference --->
<cfoutput>
(Duration: #duration# hours)<br>
</cfoutput>
这个 returns 16 小时是不正确的。时差应该是 15 小时 40 分钟。帮助将不胜感激。在这里呆了几个小时。
你做事的顺序错了。
您需要获得正确的 date/times - 所以添加/删除时区差异
<cfset departure = CreateDateTime(2017,01,27,21,00,00)> <!--- (this time zone is +2) --->
<cfset arrival = CreateDateTime(2017,01,28,06,40,00)> <!--- (this time zone is -5) --->
<cfset depart_timezone = -2>
<cfset arrive_timezone = 5>
<cfset tzDeparture = DateAdd('h',depart_timezone,departure)>
<cfset tzArrival = DateAdd('h',arrive_timezone,arrival)>
然后得到分钟总差额
<cfset difference = datediff("n",tzDeparture,tzArrival)>
然后只需计算一下将分钟转换为小时和分钟
<cfoutput>
Duration Total Mins: #difference#<br>
Duration Hours: #int(difference/60)#<br>
Duration Mins: #difference MOD 60#<br>
</cfoutput>
Output:
Duration Total Mins: 1000
Duration Hours: 16
Duration Mins: 40
你可以在这里看到一个例子:http://trycf.com/gist/26f5bce31db7787f4591317b7360ceb7/acf11?theme=monokai